【发布时间】:2018-06-16 22:54:54
【问题描述】:
假设我有以下对象定义:
var car = function (engine) {
this.engine = engine;
this.calculateSpeed = function () {
return engine.power * 20;
};
};
calculateSpeed() 函数中的engine 对象是指通过构造函数传入的引擎对象,而不是汽车的公共引擎成员(这是我想要的)。
如果我想在创建汽车对象后更改汽车的引擎,我希望 calcuateSpeed() 函数引用新引擎。
Inner function cannot access outer functions variable 的问题与我的类似。但并没有完全涵盖我的用例,因为 OP 使用的是局部变量并且没有构造函数。
如果您还可以解释为什么这不起作用,那也会有很大帮助:
var car = function (engineInit) {
this.engine = engineInit;
this.calculateSpeed = function () {
return engine.power * 20;
};
};
我知道对于这个简单的示例,我可以使用this.calculateSpeed = engine.power * 20;,但对于我的实际用例,我需要一个函数。
【问题讨论】:
-
您在使用
this.engine.power时遇到什么问题? -
正如我在问题中提到的,
this.engine.power的范围是calculateSpeed函数而不是汽车对象。 -
@StormMuller 不确定我同意。你检查我的答案了吗?
-
@user3210641 是的,你是对的。似乎我遇到了关闭问题。我接受了 Josh 的回答,因为它回答了我发布的问题。还帮助我避免了关闭问题。
标签: javascript object scope