網站首頁 學習教育 IT科技 金融知識 旅遊規劃 生活小知識 家鄉美食 養生小知識 健身運動 美容百科 遊戲知識 綜合知識
當前位置:趣知科普吧 > IT科技 > 

class類|js

欄目: IT科技 / 發佈於: / 人氣:1.26W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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)  // 3p.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()       // 123456p.toVal()          // I am is toValPerson.toString()  // TypeError Person.toStringis not a functionPerson.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)       // 3Person.sum(1,2)  // TypeError Person.sum is not a function

js class類

Tags:class js