假设我有以下对象定义:
var car = function (engine) {
this.engine = engine;
this.calculateSpeed = function () {
return engine.power * 20;
};
};
engine
calculateSpeed()
中的对象函数指的是通过构造函数传入的引擎对象,而不是汽车的公共(public)引擎成员(这是我想要的)。
如果我想在创建汽车对象后更改汽车的发动机,我想要 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
。
// Define Car constructor
const Car = function (engineInit) {
this.engine = engineInit;
this.calculateSpeed = function () {
return this.engine.power * 20;
};
};
// Create new car instance
const carInstance = new Car({ power: 100 });
// Log the result of calculateSpeed function
console.log(carInstance.calculateSpeed());
关于javascript - 如何访问同一个 javascript 对象的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50892390/