<th id="wu2k2"><s id="wu2k2"></s></th> <blockquote id="wu2k2"></blockquote>
  • <tr id="wu2k2"></tr>
  • <samp id="wu2k2"><tbody id="wu2k2"></tbody></samp><samp id="wu2k2"><tbody id="wu2k2"></tbody></samp>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    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 国产精品国产AV片国产| 亚洲精品亚洲人成人网| 久久精品国产AV一区二区三区| 国产精品无码v在线观看| 久草热8精品视频在线观看| 精品亚洲A∨无码一区二区三区| 久久国产精品一区| 国产精品一区二区综合| 久热爱精品视频线路一| 99久久综合精品免费| 苍井空亚洲精品AA片在线播放| 久久精品国产久精国产思思| 国产精品一区二区三区高清在线| 久久久国产精品四虎| 杨幂国产精品福利在线观看| 最新国产精品无码| 国产精品成人99久久久久| 992tv精品视频tv在线观看| 无码日韩精品一区二区三区免费 | 国产cosplay精品视频| 亚洲AV无码成人精品区在线观看| 九九热线精品视频16| 国产精品麻豆高清在线观看| 久久久久人妻精品一区| 国产精品VA在线观看无码不卡| 99久久精品国内| 国产成人精品久久久久| 在线精品国精品国产尤物| 四虎国产精品高清在线观看| 91大神精品视频| 99久久综合给久久精品| 人妻精品久久久久中文字幕69| 国产亚洲福利精品一区| 国产成人福利精品视频| 国产精品视频免费一区二区三区| www国产精品内射老熟女| 亚洲av永久无码精品秋霞电影秋| 国产精品吹潮香蕉在线观看| 精品久久久无码21p发布| 国产精品国产三级国产专播 | 青青草国产精品视频|