JavaScript-原型與原型鏈篇

1、什麼是原型

① 函數的原型:prototype

② 對象的原型:__proto__

2、什麼是原型鏈

原型之間的指向關係構成一條鏈,這條鏈就叫原型鏈

3、原型鏈是怎樣指向的
在這裏插入圖片描述

  1. 通過構造函數,new出的對象,新對象的__proto__指向類的prototype
  2. 非構造函數new出的對象,比如使用{},對象的__proto__指向Object的prototype
  3. 所有函數的__proto__ 指上Function()的prototype
  4. Object的prototype的__proto__指向null
  5. *.prototype是一個對象,指向了當前構造函數的引用地址

4、舉例

function Person() {}
Person.prototype.a = 123;

var person = new Person()
console.log(person.a)//123
console.log(person.hasOwnProperty('a'));//false
console.log('a'in person)//true

person實例中沒有a這個屬性,從 person 對象中找不到 a 屬性就會從 person 的原型也就是 person.__proto__ ,也就是 Person.prototype中查找,很幸運地得到a的值爲123。

假如 person.__proto__中也沒有該屬性,就去找原型的原型,一直找到最頂層Object爲止。

5、習慣

既然成員屬性/方法和原型屬性/方法,都能通過對象名訪問。我們到底用那種比較好呢?

習慣上,我們會將屬性寫爲成員屬性,而方法寫爲原型方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章