JavaScript 原型總結四 隱式原型

1.隱式原型

上節已經提到,每一個函數function都有一個prototype,即原型。這裏再加一句話——每一個對象都有一個__proto__,可成爲隱式原型。函數

obj這個對象本質上是被Object函數建立的,所以obj.__proto__=== Object.prototype。咱們能夠用一個圖來表示。spa

每一個對象都有一個_proto_屬性,☞像該構造函數的prototype.net

在說明「Object prototype」以前,先說一下自定義函數的prototype。自定義函數的prototype本質上就是和 var obj = {} 是同樣的,都是被Object建立,因此它的__proto__指向的就是Object.prototype。prototype

函數也是一種對象,函數也有__proto__對象

  1. 根據上面說的一句話——對象的__proto__指向的是建立它的函數的prototype,就會出現:Object.__proto__ === Function.prototype
  2. Function也是一個函數,函數是一種對象,也有__proto__屬性。既然是函數,那麼它必定是被Function建立。因此——Function是被自身建立的。因此它的__proto__指向了自身的Prototype
  3. Function.prototype指向的對象也是一個普通的被Object建立的對象,因此也遵循基本的規則,是一個環形結構

下一節<原JavaScript 原型總結五 instanceof>blog

相關文章
相關標籤/搜索