JavaScript 原型及原型鏈

20170405發表於2020-08-05

  原型物件

  原型物件:我們建立的每個函式都會有一個 prototype(原型)屬性,這個屬性是一個指標,指向一個物件,這個物件就是透過呼叫建構函式而建立的那個物件例項的原型物件。

  簡單來說,無論什麼時候,只要建立一個新的函式,就會為該函式建立一個prototype屬性,這個屬性指向函式的原型物件。

  // 建構函式 Person

  function Person() {

  };

  // 原型新增屬性

  Person.prototype.name = 'Tom';

  Person.prototype.sayName = function () {

  alert(this.name);

  };

  // 建立例項

  var person1 = new Person();

  person1.sayName(); // Tom

  // prototype屬性指向函式的原型物件

  console.log(Person.prototype); // {name: "Tom", sayName: ƒ, constructor: ƒ}

  123456789101112131415161718

  原型物件的用途:包含可以由特定型別的所有例項共享的屬性和方法。

  使用原型物件的好處:可以讓所有例項共享它所包含的屬性和方法。

  constructor:所有的原型物件都會有一個constructor屬性,這個屬性是一個指向prototype屬性所在函式的指標,也就是指向與之關聯的建構函式。

  // constructor屬性指向與之關聯的構 造函式  

  console.log(Person.prototype.constructor); // ƒ Person() { }

  console.log( Person.prototype.constructor === Person ); // true

  __proto__:當呼叫建構函式建立一個新例項後,該例項內部將包含一個指標__proto__,指向建構函式的原型物件。__proto__屬性存在於例項與建構函式的原型物件之間。

  // __proto__屬性指向該建構函式的原型物件

  console.log( person1.__proto__ ); // {name: "Tom", sayName: ƒ, constructor: ƒ}

  console.log( person1.__proto__ === Person.prototype ); // true

  


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69979119/viewspace-2709500/,如需轉載,請註明出處,否則將追究法律責任。

相關文章