2
恰好碰到了這是正確的我的Javascript宇宙邊緣的具有約束力的問題,所以我要談我的方式,通過它,紅塔建議,並在我的問題到達:Javascript-bind()在ECMAScript 5之前/如何使用apply()或call()模擬?
function foo() {
document.body.addEventListener("click", this.bar);
}
foo.prototype.bar = function(evt) {
alert(this);
}
test = new foo();
此提醒有document.body
元素,因爲this
由於函數引用而丟失。因此,必須參考使用bind()
堅持參考:
function foo() {
document.body.addEventListener("click", this.bar.bind(this));
}
此提醒與foo
類型的預期目的。
但是,根據this table,瀏覽器的一堆不會,如果我使用bind()
發揮好。我一直在閱讀apply()
和call()
,但它們似乎適用於有爭議的案例。在這種情況下,如何使用ECMAScript5之前的方法來實現我需要的bind()
行爲?
http://ejohn.org/apps/learn/(點擊「我們的目標」然後點擊下一步,你會在那裏看到答案。)另請參閱https://developer.mozilla.org/en/JavaScript/參考/ Global_Objects /功能/綁定。 – 2012-07-13 03:39:55
酷豆人 - 非常有幫助。很高興接受爲解決方案。 – Ben 2012-07-13 03:54:02