【问题标题】:Object parameter used in the same object as other object parameter? [duplicate]与其他对象参数在同一对象中使用的对象参数? [复制]
【发布时间】:2019-11-13 03:21:01
【问题描述】:

快速简单的新手问题 - 可以在其他对象参数中使用对象参数(但它是同一个对象)?

var obj = {
  a : 'a',
  b : 'b',
  ab : 'Our new parameter: ' + (obj.a + obj.b) + 'is presented!',
  test : obj.ab
}

console.log(obj.ab);

所以当我调用 obj.ab 时对象还没有准备好 - 知道如何处理吗? obj 现在是全局对象,其余代码使用大量 obj.ab - 我不想进行重大更改,有什么简单的想法吗?

【问题讨论】:

  • 我确实找到了一些指导,所以我确实设法完成了我想要的,谢谢。

标签: javascript object properties


【解决方案1】:

您可能希望简单地转换为函数ab 并通过this 访问对象属性。

var obj = {
  a : 'a',
  b : 'b',
  ab : () => 'Our new parameter: ' + (this.obj.a + this.obj.b) + 'is presented!',
  test : () => this.obj.ab
};

console.log(obj.ab());
console.log(obj.test());

// ab: () => is an arrow function
// test: () => is also an arrow function

【讨论】:

  • 谢谢我最后做了类似的事情: var foo = { a: 'a', b: 'b', c: function(){return foo.a + foo.b;}( ), d: function(){return foo.c;}() } console.log(foo.c); // ab console.log(foo.d); // ab console.log(foo); // 我们的 foo 对象显示正确的值
  • 厉害,这样也对!
  • 不是真的......当我导出我的全局对象时它不起作用,我不知道为什么。无论我使用 object 还是 this 它根本不起作用 - 给出未定义的。编辑:当我在需要全局变量的文件中执行函数(方法)时它起作用了。所以不能调用全局对象中的方法。
  • 我明白了,我建议你看看 Module Pattern addyosmani.com/resources/essentialjsdesignpatterns/book/… 以避免这些问题
  • 呸呸呸,我认为这种情况更加具体......我在路由(快速路由)中有全局对象,最后我需要我的全局对象的实例 - 否则应用程序做不能正常工作。所以知道如何拥有全局对象的实例 - 通过所有需要它的模块访问(连接到特定的用户请求 - 所以每个用户都有......自己的全局对象)?无论如何感谢您的链接!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多