我需要从对象B的内部访问对象的值,例如对象A,其中对象B在对象A的内部.更具体地说,对象B有一个函数,该函数将更改对象A的值,但该函数不能更改对象A的值,因为对象B挡住了路.

我想要doThing来改变part()的值.问题是因为doThingexampleObj内,所以当doThing使用this.x++时,函数会try 更改exampleObjx,即使它没有x的值.

var doThing = function() {
    this.x++;
}

var exampleObj = {
    action:doThing
}

function part(x,y,obj) {
    this.x = x;
    this.y = y;
    this.exampleObj = obj;
    
    this.function = function() {
        this.exampleObj.action();
    }
}

推荐答案

没有从exampleObj返回到part对象的链接.

可以在调用函数时将其绑定到this.

var doThing = function() {
  this.x++;
}

var exampleObj = {
  action: doThing
}

function part(x, y, obj) {
  this.x = x;
  this.y = y;
  this.exampleObj = obj;

  this.function = function() {
    this.exampleObj.action.call(this);
  }
}

p = new part(1, 2, exampleObj);
p.function();
console.log(p.x, p.y);

Javascript相关问答推荐

如何在react + react路由域名中使用DeliverBrowserRouter?

更新Reduxstore 中的状态变量,导致整个应用程序出现不必要的重新渲染

具有相同参数的JS类

在服务器上放置了Create Reaction App Build之后的空白页面

在grafana情节,避免冲突的情节和传说

为什么按钮会随浮动属性一起移动?

为什么Mutations 观察器用微任务队列而不是macrotask队列处理?

我在Django中的视图中遇到多值键错误

如何将多维数组插入到另一个多维数组中?

Next.js服务器端组件请求,如何发送我的cookie token?

以Angular 实现ng-Circle-Progress时出错:模块没有导出的成员

在数组中查找重叠对象并仅返回那些重叠对象

如何使用TypeScrip设置唯一属性?

为什么这个.add.group({})在教程中运行得很好,但在我的游戏中就不行了?

自定义图表工具提示以仅显示Y值

MongoDB受困于太多的数据

在Odoo中如何以编程方式在POS中添加产品

当我点击一个按钮后按回车键时,如何阻止它再次被点击

如何找到带有特定文本和测试ID的div?

无法使用npm install安装react-dom、react和next