1. 程式人生 > >關於原型和隱式原型寫個筆記

關於原型和隱式原型寫個筆記

如果 tor ons 一句話 函數的原型 struct var 插件 指向

創建一個函數 function f1(){

  //。。。。。

首先每個函數f1都有一個自帶的原型屬性prototype,這個原型又是一個對象 , 他有自己一個唯一的constructor的屬性指向自身,當然也可以定義很多原型屬性用來寫插件之類,這句話相對下面的每個prototype

其次每個函數f1還有一個自帶的隱式原型屬性__proto__ 這個也是一個對象,他繼承於創建這個函數的原型,既Function.prototype, f1.__proto===Function.prototype,

當然函數f1自帶的原型prototype自己也有一個__proto__的屬性,指向Object.prototype, f1.prototype.__proto__===Object.prototype,

當然構造函數Object的prototype也有一個__proto__屬性指向誰呢?null

然後Function也有一個__proto__的屬性,它指向誰呢?它指向他自身的prototype 很叼吧 循環來的

這樣看來大概就清楚一點了,首先自定義對象都是被Object創建的 不過相對於直接創建自定義函數少了一個Function的步驟 所以如果是自定義一個對象的話

var f2={... } f1.__proto__===Object.prototype,

函數的話f1.__proto__===Function.prototype, Function.prototype.__proto__===Object.prototype,

全文都圍繞一句話來表達:對象的__proto__指向的是創建它的函數的prototype

關於原型和隱式原型寫個筆記