Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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 - Fatal编程技术网

Javascript 从对象内部访问当前对象

Javascript 从对象内部访问当前对象,javascript,object,Javascript,Object,可能重复: 我正在创建这样一个对象: var lines = { all: [ /* Array */ ], current: this.all[1] } var lines = { all: [ /* Array */ ] } lines.current = lines.all[1]; 但是当前:this.all[1]返回未定义的。我很清楚,我可以像这样创建current属性: var lines = { all: [ /* Array */ ],

可能重复:

我正在创建这样一个对象:

var lines = {
    all: [ /* Array */ ],
    current: this.all[1]
}
var lines = {
    all: [ /* Array */ ]
}
lines.current = lines.all[1];
但是
当前:this.all[1]
返回
未定义的
。我很清楚,我可以像这样创建
current
属性:

var lines = {
    all: [ /* Array */ ],
    current: this.all[1]
}
var lines = {
    all: [ /* Array */ ]
}
lines.current = lines.all[1];
但我认为这是相当混乱的,尤其是当创建多个需要引用自己对象的属性时

我试着两者都用

  • current:this.all[1]
    (返回
    未定义的
    )和
  • 当前:行。所有[1]
    (表示
    不存在)

如何引用当前“所在”对象的属性?例如,在我的第一个示例中,
行。当前的
将从
行分配第二个元素。所有的

除了您发布的解决方案之外,只有一个解决方案:

var lines = new function() {
    this.all = [ /* Array */ ];
    this.current = this.all[1];
};

除了您发布的解决方案之外,还有一个解决方案:

var lines = new function() {
    this.all = [ /* Array */ ];
    this.current = this.all[1];
};

因为current可能只是一个
getter

根据某些约定,应该将名称更改为
getCurrent()
,因为数组中的顶部元素可能会更改
然后把代码改成这样

var lines = {
    all: [ /* Array */ ],
    getCurrent: function(){return this.all[1];}
}

因为current可能只是一个
getter

根据某些约定,应该将名称更改为
getCurrent()
,因为数组中的顶部元素可能会更改
然后把代码改成这样

var lines = {
    all: [ /* Array */ ],
    getCurrent: function(){return this.all[1];}
}

相关的:相关的:我希望会有一个“更清洁”的解决方案,但我想没有。我本可以使用getter函数,但这更混乱,不适合使用
console.log()
进行调试。我认为这与问题略有不同,因为本例中的行更接近OOP中的类,而不是object@Parv我真的不太烦;这个解决方案返回一个我所担心的对象。我希望有一个“更干净”的解决方案,但我想没有。我本可以使用getter函数,但这更混乱,不适合使用
console.log()
进行调试。我认为这与问题略有不同,因为本例中的行更接近OOP中的类,而不是object@Parv我真的不太烦;此解决方案返回一个我所担心的对象。这是一个很好的解决方案,因为它将所有内容都保留在对象内,但是它在
console.log()
中调试不太好,因此我决定改用
new function()
。这是一个很好的解决方案,因为它将所有内容都保留在对象内,但是它在
console.log()
中调试得不太好,所以我决定改用
newfunction()