1
我很好奇Javascript的這種設計,也許這種架構或設計模式的任何原因都可以用來利用這一點。在Javascript中,爲什麼構造函數屬性指向原型鏈中最基礎的構造函數?
對象的constructor
屬性始終是創建該對象的函數的引用,是否正確?
但是,採取這種代碼:
function base()
{
this.SayHi = function()
{
window.alert('Hi');
};
}
function subclass()
{
this.SayBye = function()
{
window.alert('Bye');
};
}
subclass.prototype = new base();
var s = new subclass();
s.SayHi();
s.SayBye();
window.alert(s.constructor);
最後一行將回顯構造函數base
,即使我們知道subclass
被稱爲創建對象(否則SayBye
是行不通的)。
一個潛在的變通方法是簡單地做:
subclass.prototype.constructor = subclass;
也許問我的問題的一個更簡潔的方法就是爲什麼s.constructor
等於subclass.prototype.constructor
而不是subclass.constructor
,因爲s
是一個instanceof子類。謝謝!
爲Javascript花園鏈接+1,這是一個有趣的閱讀!解決了我多年來的一些誤解。 –
該陳述令人困惑,因爲它很容易被解釋爲意味着對象的公共原型,而繼承來自* internal * proptotypes。需要對MDN進行另一次編輯。 – RobG
@RobG:謝謝,我會反映新的文字(當你改變它的時候)。 – alex