Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中声明对象时,如何设置与另一个对象相关的属性_Javascript_Object_Coding Style_Modularity - Fatal编程技术网

在javascript中声明对象时,如何设置与另一个对象相关的属性

在javascript中声明对象时,如何设置与另一个对象相关的属性,javascript,object,coding-style,modularity,Javascript,Object,Coding Style,Modularity,这就是我的代码()的基本结构: 基本上是这样 我的问题是,当我声明设置并希望它们相互关联时,我不能: settings: { numArticles: 5, scienceAricles: numArticles - 3 } 这显然也不起作用,因为对象仍然没有定义(这实际上没有意义,只是为了举例说明我的意思): 所以我现在唯一能想到的办法就是做这样的事情: var NewsWidget = {}; NewsWidget.s = {}; NewsWidget.s.numArti

这就是我的代码()的基本结构:

基本上是这样

我的问题是,当我声明设置并希望它们相互关联时,我不能:

settings: {
    numArticles: 5,
    scienceAricles: numArticles - 3
}
这显然也不起作用,因为对象仍然没有定义(这实际上没有意义,只是为了举例说明我的意思):

所以我现在唯一能想到的办法就是做这样的事情:

var NewsWidget = {};
NewsWidget.s = {};

NewsWidget.s.numArticles = 5;
NewsWidget.s.scienceArticles = NewsWidget.s.numArticles -3;

但我不太喜欢这种方法,我们的代码库已经基于前面提到的和链接的体系结构,所以这将是一个相当大的重新结构


我错过什么了吗?在不改变整个方法的情况下,这样做的最佳方法是什么?

在对象文本中,无法引用同一文本中的其他值。您必须执行编写的操作,首先创建,然后修改。如果愿意,您可以在外部创建其他变量以使其更简单。在对象文本中无法引用同一文本中的其他值。您必须执行编写的操作,首先创建,然后修改。如果您愿意的话,可以在外部创建其他变量以使其更简单。嗯,有趣的是,我没有想到这一点。我会等待其他答案,但这正是我一直在寻找的答案。嗯,有趣的是,我没有想到这一点。我会等待其他答案,但这正是我一直在寻找的。
var numArticles = 5,
   s,
   NewsWidget = {

     settings: {
       numArticles: numArticles,
       scienceAricles: numArticles - 3
     },

     init: function() {
       // kick things off
       s = this.settings;
     }    
  };
var NewsWidget = {};
NewsWidget.s = {};

NewsWidget.s.numArticles = 5;
NewsWidget.s.scienceArticles = NewsWidget.s.numArticles -3;
var numArticles = 5,
   s,
   NewsWidget = {

     settings: {
       numArticles: numArticles,
       scienceAricles: numArticles - 3
     },

     init: function() {
       // kick things off
       s = this.settings;
     }    
  };