javascript - 如何访问同一个 javascript 对象的成员?

标签 javascript object scope

假设我有以下对象定义:

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/

相关文章:

Java ArrayList 尝试检查具有此名称的对象是否存在

java 。重新声明类初始值设定项内的类字段和方法嵌套 block (框架大括号)差异中的局部变量

java - 从另一个类调用位于主类中的方法

c++ - 有没有办法在 C++ 中访问外部范围内的局部变量?

javascript - 在新窗口中打开 html5 <video> 标签内容(包括视频!)

javascript - ng-change 工作不正确吗?

javascript - 从实例对象调用异步方法会出现错误 : TypeError: Object(. ..) 不是函数

javascript - `new` 没有 `delete` 在 Javascript 中的相同变量

javascript - 从 json 字符串创建可下载的 csv

javascript - 填充动画延迟