前端開發面試總結(六)
prototype和__proto__的區別和聯繫
重點:函數
- 一、每個對象都有一個__proto__屬性,包括函數也是對象,也有__proto__屬性。
- 二、每個構造函數都有一個prototype方法。
- 三、每一個對象的__proto__屬性都指向自身構造函數的prototype。(obj.__proto__等於function.prototype)
一、概念
protoprototype
- 對象特有
- 該屬性指向對象自己的構造函數的prototype
- 因此對象能夠從prototype中繼承屬性和方法
prototypecode
- 該屬性是函數特有
- 該屬性能夠用於存儲須要被共享的屬性和方法
constructor對象
- 函數特有,定義在prototype裏面
- 使用new建立實例的時候,實例會繼承prototype中的屬性和方法
二、既是函數也是對象
Object:既是對象,也是構造函數繼承
- 做爲對象:
Object.__proto__ === Function.prototype
- 做爲函數:
Object.prototype
是原型鏈的頂端,Object.prototype.__proto__ === null
Function:既是對象,也是構造函數原型鏈
- 做爲對象:
Function.__proto__ === Function.prototype
- 做爲函數:
Function.prototype
的函數和屬性能夠被實例共享,Function.prototype.__proto__ === Function.
歡迎關注本站公眾號,獲取更多信息