有一天,我正在擺弄Javascript,並且我注意到我不能在原型函數中將原型寫入對象。像這樣:Javascript嵌套原型
var obj = function() { }
obj.prototype.First = function() {
this.prototype.Second = function() {
alert("Second Prototype");
}
}
obj.First();
obj.Second();
出於某種原因,第二個原型將無法工作,代碼無法運行。我的語法是錯誤的還是有一些我不知道的原型限制?謝謝!
編輯:
我沒有試圖添加原型到原型......這沒有多大意義。這就是我想要做的:將兩個單獨的原型添加到obj。原型2是在調用原型1時定義的。我認爲this
將包含對象的引用,因此this.prototype
將與obj.prototype
相同,但它不能按預期工作。
爲什麼不直接使用'obj.prototype.Second = ...'? – 2014-09-30 00:12:52
你正在混淆函數和實例。 – SLaks 2014-09-30 00:39:06
'obj'是一個函數。 'obj.prototype'是函數的一個屬性,只有當你用'new'調用函數時纔會使用它。例如。 'var foo = new obj();'。 'foo.First'現在可用,因爲'obj.prototype'是'foo'的原型。然而,'obj.First'不能工作,因爲你從來沒有在'obj'上創建'First'屬性。 – 2014-09-30 20:53:03