'this'關鍵字在gloabl對象中使用時指的是什麼?javascript在全局對象中使用'this'
比方說,例如,我們有:
var SomeGlobalObject =
{
rendered: true,
show: function()
{
/*
I should use 'SomeGlobalObject.rendered' below, otherwise it
won't work when called from event scope.
But it works when called from timer scope!!
How can this be?
*/
if(this.rendered)
alert("hello");
}
}
現在,如果我們在一個內嵌腳本的HTML頁面中調用:
SomeGlobalObject.show();
window.setTimeout("Msg.show()", 1000);
一切工作正常。
但是,如果我們這樣做
AppendEvent(window, 'load', Msg.show);
我們得到了一個錯誤,因爲從事件範圍調用時this.rendered是不確定的。
- 你知道爲什麼會發生這種情況嗎?
- 你能否解釋一下,如果有另一種更智能的方法來做到這一點,而不必每次都將SomeGlobalObject.someProperty重寫到SomeGlobalObject代碼中?
謝謝!
AppendEvent只是一個簡單的跨瀏覽器函數來追加一個事件,下面的代碼,但它沒關係,以回答上述問題。
function AppendEvent(html_element, event_name, event_function)
{
if(html_element.attachEvent) //IE
return html_element.attachEvent("on" + event_name, event_function);
else
if(html_element.addEventListener) //FF
html_element.addEventListener(event_name, event_function, false);
}
啊,JavaScript,你缺少默認的方法綁定,已經聲稱它的第一百萬個受害者...... – bobince 2010-03-30 13:49:13