爲了與神祕的結尾:
到底是什麼Object.__proto__
?
的Object
構造函數幾乎所有的內置和用戶定義的函數,從Function.prototype
繼承。
這個對象(Function.prototype
)是described in the specification成爲Function對象,但很明顯,對象不能從自身繼承,這就是爲什麼它Object.protoype
,而不是繼承。
您的測試:
Object.__proto__ instanceof Function; // false, which is equivalent to:
Function.prototype instanceof Function; // false
簡直是在告訴我們,Function.prototype
對象不在原型鏈的Function.prototype
本身:
Function.prototype.isPrototypeOf(Function.prototype); // false, equivalent to:
Object.prototype.isPrototypeOf.call(Function.prototype, Function.prototype);
正如我之前說,in the specification這對象描述具有以下特徵,如果您有興趣:
它是一個函數對象(實現[[Call]]
內部方法)。
typeof Function.prototype; // "function"
其[[Class]]
內部屬性的值是"Function"
。
Object.prototype.toString.call(Function.prototype); // "[object Function]"
其[[Prototype]]
內部屬性點來Object.prototype
值(如你現在知道)。
Object.prototype.isPrototypeOf(Function.prototype); // true
可以用任意數量的參數調用。
它始終返回undefined
值。
其length
財產是0
。
其[[Extensible]]
內部財產的初始值爲true
。
來源
2011-05-12 18:27:03
CMS
+1 - 「說什麼?」鏈接是一個很好的資源。很好,很簡潔。 – McStretch 2011-05-11 12:53:49
@McStretch:乾杯! – 2011-05-11 13:02:38
哈哈,我剛剛意識到這是你的博客。祝賀你! – McStretch 2011-05-11 13:09:15