也許標題聽起來有點不可思議(請改進) - 但我需要以下方案的解決方案。我有以下代碼:即使使用修改上下文的函數也不要修改上下文
var Foo = function() {
this._hello = "world!";
};
Foo.prototype.bar = function() {
console.log(this._hello);
};
var f = new Foo();
f.bar(); // => "world!"
f.bar.apply(this); // => undefined
我知道apply
變化的情況下,所以裏面bar
,this
將是全局對象(在第二次調用)。
但我需要的是從Foo
功能訪問this
。我看到的解決方案是:
var Foo = function() {
var self = this;
self._hello = "world!";
self.bar = function() {
console.log(self._hello);
};
};
但是,我會選擇不在另一個函數中有方法聲明。
我寧願定義方法(只是代碼風格)同列級:
var Foo = ...;
Foo.prototype.method = ...;
這可能嗎?怎麼樣?
只是不打擾縮進你的代碼。 – 1983 2014-09-28 23:12:04
這不是「範圍」,它是調用的*上下文* – Bergi 2014-09-29 20:59:41
爲什麼要在'bar'上使用'apply'?你的電話怎麼看起來不是簡單的'f.bar()'? – Bergi 2014-09-29 21:00:50