<strike id="cakm0"></strike>
  • <button id="cakm0"><dl id="cakm0"></dl></button>
  • <samp id="cakm0"><tbody id="cakm0"></tbody></samp>
    <samp id="cakm0"><pre id="cakm0"></pre></samp><ul id="cakm0"></ul>
    <strike id="cakm0"></strike>
    <li id="cakm0"></li>
  • <ul id="cakm0"></ul>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    js class類

    文檔

    js class類

    js class類是指:class(類)是ECMAScript6中新增的關鍵字,專門用于創建“類”的,“類”可被用于實現邏輯的封裝,開始增加了“類”相關的語法,使得JavaScript中的面向對象實現方式更加標準。
    推薦度:
    導讀js class類是指:class(類)是ECMAScript6中新增的關鍵字,專門用于創建“類”的,“類”可被用于實現邏輯的封裝,開始增加了“類”相關的語法,使得JavaScript中的面向對象實現方式更加標準。

    js class類是什么呢?一起來看下吧:

    class(類)是ECMAScript6中新增的關鍵字,專門用于創建“類”的,“類”可被用于實現邏輯的封裝。傳統面向對象的編程序語言都是“類”的概念,對象都是由類創建出來,然而早期JavaScript中是沒有類的,面向對象大多都是基于構造函數和原型實現的,但是ECMAScript6規范開始增加了“類”相關的語法,使得JavaScript中的面向對象實現方式更加標準。

    類的聲明

    定義一個類的一種方法是使用一個類聲明,即用帶有class關鍵字的類名(這里“Rectangle”)函數名和實例化構造名相同且大寫(非強制)

    class?Person?{
    ?constructor(x,?y)?{
    ????this.x?=?x
    ????this.y?=?y
    ??}
    }

    函數聲明和類聲明之間的一個重要區別是函數聲明會提升,類聲明不會。需要先進行聲明,再去訪問,否則會報錯

    var?person=?new?Person()
    class?Person?{
    ?constructor(x,?y)?{
    ????this.x?=?x
    ????this.y?=?y
    ??}
    }
    //?Personis?not?defined

    類聲明不可以重復

    class?Person?{}
    class?Person?{}
    //?TypeError?Identifier?'Person'?has?already?been?declared

    類必須使用 new 調用,否則會報錯。這是它跟普通構造函數的一個主要區別,就是后者不用 new 也可以執行

    class?Person?{
    ?constructor(x,?y)?{
    ????this.x?=?x
    ????this.y?=?y
    ??}
    }
    Person()
    //?TypeError?Class?constructor?Person?cannot?be?invoked?without?'new'

    類表達式(類定義)

    類表達式可以是被命名的或匿名的

    /*?匿名類?*/?
    let?Person?=?class?{
    ??constructor(x,?y)?{
    ????this.x?=?x
    ????this.y?=?y
    ??}
    }
    /*?命名的類?*/?
    let?Person?=?class?Person?{
    ??constructor(x,?y)?{
    ????this.x?=?x
    ????this.y?=?y
    ??}
    }

    類的方法

    constructor 方法

    constructor 方法是類的默認方法,通過 new 命令生成對象實例時,自動調用該方法(默認返回實例對象 this)。一個類必須有 constructor 方法,如果沒有顯式定義,一個空的 constructor 方法會被默認添加。一個類只能擁有一個名為 “constructor” 的特殊方法,如果類包含多個 constructor 的方法,則將拋出 一個 SyntaxError 。

    class?Person?{
    ???constructor(x,?y)?{
    ????this.x?=?x????//?默認返回實例對象?this
    ????this.y?=?y
    ??}
    ??toString()?{
    ????console.log(this.x?+?',?'?+?this.y)
    ??}
    }

    注意:

    1、在類中聲明方法的時候,方法前不加 function 關鍵字

    2、方法之間不要用逗號分隔,否則會報錯

    3、類的內部所有定義的方法,都是不可枚舉的(non-enumerable)

    4、一個類中只能擁有一個constructor方法

    靜態方法

    靜態方法可以通過類名調用,不能通過實例對象調用,否則會報錯

    class?Person?{
    ????static?sum(a,?b)?{
    ????????console.log(a?+?b)
    ????}
    }
    var?p?=?new?Person()
    Person.sum(1,?2)??//?3
    p.sum(1,2)?????//??TypeError?p.sum?is?not?a?function

    原型方法

    類的所有方法都定義在類的 prototype 屬性上面,在類的實例上面調用方法,其實就是調用原型上的方法

    原型方法可以通過實例對象調用,但不能通過類名調用,會報錯

    class?Person?{
    ?constructor()?{
    ??//?默認返回實例對象?this
    ?}
    ????sum()?{
    ?????
    ????}
    ????toString()?{
    ?????console.log('123456')
    ???}
    }
    //?給?Person?的原型添加方法
    Person.prototype.toVal?=?function()?{
    ?console.log('I?am?is?toVal')
    }
    //?等同于
    Person.prototype?=?{
    ??constructor()?{},
    ??sum()?{},
    ??toString()?{}
    }
    var?p?=?new?Person()
    p.toString()???????//?123456
    p.toVal()??????????//?I?am?is?toVal
    Person.toString()??//?TypeError?Person.toStringis?not?a?function
    Person.toVal()??//?TypeError?Person.toVal?is?not?a?function

    實例方法

    實例方法也可以通過實例對象調用,但同樣不能通過類名調用,會報錯

    class?Person?{
    ????constructor()?{
    ????????this.sum?=?function(a,?b)?{
    ????????????console.log(a?+?b)
    ????????}
    ????}
    }
    var?p?=?new?Person()
    p.sum(1,2)???????//?3
    Person.sum(1,2)??//?TypeError?Person.sum?is?not?a?function

    以上就是小編今天的分享,希望可以幫助到大家。

    文檔

    js class類

    js class類是指:class(類)是ECMAScript6中新增的關鍵字,專門用于創建“類”的,“類”可被用于實現邏輯的封裝,開始增加了“類”相關的語法,使得JavaScript中的面向對象實現方式更加標準。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關推薦
    python中strip函數的用法 getclass方法 python中find函數的用法 java反射獲取屬性值 vue 調用子組件方法 python的range函數用法 js set去重 vue使用jquery python skimage armoury crate打不開 java process deque java linux 格式化u盤 js讀取文件 python 交集 object 轉list object轉bigdecimal java get和set方法 python中get函數用法 js set方法 mysql time類型 python中sorted函數的用法 cad的基本命令 ubuntu卸載mysql js獲取隨機數 opencv安裝教程python python numpy教程 js獲取日期 python tkinter教程 java reentrantlock c語言struct用法 字符轉換成ascii碼 js date加一天 vue動態綁定style spring boot mysql配置 python 排序算法 python字典按值的大小排序 python 列表添加 python讀取json并解析 debug error怎么解決
    Top 51精品视频免费国产专区| 精品一区二区三区在线视频观看| 国产午夜精品一区二区三区漫画| 国产产在线精品亚洲AAVV| 久久久精品国产免大香伊| 亚洲欧洲国产精品香蕉网| 国产成人精品免费视频大全麻豆| 免费看国产精品麻豆| 99久久这里只精品国产免费| 无码人妻精品中文字幕| 精品国产成人国产在线观看| 国内精品久久久久影视| 一级一级特黄女人精品毛片视频| 乱码精品一区二区三区| 国产精品白丝AV网站| 久久激情亚洲精品无码?V| 精品小视频在线观看| 日韩精品视频观看| 美国发布站精品视频| 亚洲精品国产啊女成拍色拍 | 国产综合成人色产三级高清在线精品发布 | 国产精品不卡高清在线观看| 亚洲精品无码日韩国产不卡av| 亚洲精品第一国产综合精品| 久久91精品国产91久久| 亚洲综合av永久无码精品一区二区| 国产成人高清精品免费观看| 麻豆国产精品有码在线观看| 3d动漫精品一区视频在线观看 | 97久久超碰国产精品旧版| 91精品国产亚洲爽啪在线影院| 国产精品内射后入合集| 尹人久久久香蕉精品| 久久久久九九精品影院| 久久久久人妻一区精品果冻| 久久五月精品中文字幕 | 69精品人人人人人人人人人| 人妻少妇精品视频三区二区一区| 亚洲精品无码成人| 国产精品视频永久免费播放| 网曝门精品国产事件在线观看|