我新的基於原型的語言,並已閱讀了這個問題:使用基於原型簽名附加方法的對象的Javascript原型綁定
Preserving a reference to "this" in JavaScript prototype functions
我想知道什麼價值存在, 。爲什麼不把方法附加到對象定義中的對象的屬性?
其次,當使用原型簽名來定義對象上的方法時,爲什麼'this'指針會解析到函數內部的窗口對象?這似乎是一個設計缺陷。如果不是有人可以解釋,或者指出我爲什麼不解釋?
謝謝。
編輯:
如預期,呈現一個消息框,字「這裏」這裏面的代碼執行。
function Obj()
{
this.theVar = 'here';
this.method2 = function(){ alert(this.theVar); }
}
Obj.prototype.method3 = function(){ this.method2(); }
Obj.prototype.method4 = function(){ this.method3(); }
var obj = new Obj();
obj.method4();
此代碼是我的AJAX回調函數,'this'指針指向執行期間的'window'對象。
Test.prototype.nextCallback = function(response)
{
if(response.Status != 'SUCCESS')
show_message(response.Message, false);
else
this.setQuestion(response.Question);
}
Test.prototype.setQuestion = function(question){ ... }
'this'指針實際上在AJAX調用之前正常工作,但不在之後。這是否是因爲在AJAX調用返回之後且在調用回調之前nextCallback()上下文未正確恢復?有沒有辦法來解決這個問題?
我不認爲你的意思是'原型簽名' - 你說的是原型屬性不是嗎? – Skilldrick 2010-07-20 21:20:32
「原型簽名」我的意思是定義一個像這樣的方法: myObj.prototype.myFunction = function(){...} – 2010-07-20 21:24:36