百木园-与人分享,
就是让自己快乐。

JavaScript 自學筆記23

1. JavaScript new.target 元屬性

(1). ES6提供了new.target元屬性,來檢查函數或者構造函數是否被new操作符調用。

  • 檢查函數是否被new調用:

如:function Animal(name) {

if (!new.target) { throw `Please use \'new\' operator with Animal.`; };

// 如果沒有使用new操作符,將會報錯

this.name = name;

};

Animal(\'Cat\'); // Error: Please use \'new\' operator with Animal.

  • 檢查構造函數是否被new調用:

如:class Animal {

constructor(name) {

this.name = name;

console.log(new.target.name);

};};

let cat = new Animal(\'Cat\'); // \'Animal\'

2. 靜態方法

(1). ES6引入static關鍵詞來定義靜態方法

如:class Animal {

constructor(name) { this.name = name; };

get name() { return this.name; };

static greeting(){ console.log(`Hello, ${this.name}`); };

};

Animal.greeting(); // \'Hello, Animal\'

(2). 在類的構造器,或實例方法中調用靜態方法的兩種語法

  • className.staticMethodName()

如:Animal.greeting(); // \'Hello, Animal\'

  • this.constructor.staticMethodName()

如:let cat = new Animal(\'bobo\');

cat.constructor.greeting(); // \'Hello, Animal\'

3. 靜態屬性

與共享靜態方法相同,類的所有實例都共享靜態屬性。

(1). 使用static關鍵詞定義靜態屬性

如:class Food { static eat = 2; };

console.log(Food.eat); // 2

(2). 在構造器中調用靜態屬性的兩種語法

  • className.staticPropertyName(此語法也可以在靜態方法中調用靜態屬性)。

如:class Food { static eat = 2; };

console.log(Food.eat);

  • this.constructor.staticPropertyName

如:class Food {

static eat = 0;

constructor(name, quantity){

this.name = name;

this.quantity = quantity;

this.constructor.eat++;};

static eatCount() { return Food.eat; };

};


来源:https://blog.csdn.net/Yvonne_Jin/article/details/123247215
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » JavaScript 自學筆記23

相关推荐

  • 暂无文章