關於原型和隱式原型寫個筆記
阿新 • • 發佈:2018-05-26
如果 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
關於原型和隱式原型寫個筆記