也许标题听起来有点不可思议(请改进) - 但我需要以下方案的解决方案。我有以下代码:即使使用修改上下文的函数也不要修改上下文
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