我發現了一些有趣的例子。其中有鏈接到這article。 據說:Javascript函數重寫原型
Function.__proto__
點Function.prototype
。這導致:
Function.constructor === Function
也就是說:功能是它自己的構造!
Object instanceof Object == true.
這是因爲:
Object.__proto__.__proto__.constructor == Object
還要注意的是不像
Object instanceof Object
,Foo instanceof Foo == false
。 這是因爲:Foo
不存在作爲它自己的原型鏈的構造函數。
從Mozilla開發者網絡我發現原型和構造函數都可以很容易被重寫。而且由於instanceof
只是在原型鏈中檢查constructor.prototype
,所以我不明白爲什麼我的代碼仍然返回false
。
function Foo() { } ;
Foo.prototype = Foo
Foo.constructor = Foo
Foo instanceof Foo // still false
還有一些關於原型的quetions。我做對了嗎,原型本身是一個單獨的輔助對象?這個對象就像另一個對象上的指針 - 通常是Object
。
嗯...有人能告訴我如何把大膽__proto__成_原_? – Bart
對不起,重複的答案,你是一個很好的答案。我不知道如何逃避大膽的減價,而不是將其包裝在代碼段中,就像您之前在答案中所做的那樣。 –
謝謝你的回答,的確如此。我試圖改變'__proto__'和JS虛擬機顯示和對象的循環錯誤。 –