用JavaScript对象中的另一个键值分配键值
例如,我知道在Javascript中可以使用前面的键值设置键值用JavaScript对象中的另一个键值分配键值,javascript,javascript-objects,Javascript,Javascript Objects,例如,我知道在Javascript中可以使用前面的键值设置键值 var obj = { one: "yes", two: obj.one } obj[two]现在等于“是” 当键在函数中时,如何设置值 var obj = { one: function () { return( two: "yes"
var obj = {
one: "yes",
two: obj.one
}
obj[two]现在等于“是”
当键在函数中时,如何设置值
var obj = {
one: function () {
return(
two: "yes"
three: ?? //I want to set three to the value of two
)
}
}
我想让三个值包含两个值,即obj.one()应该返回{two:“yes”,twree:“yes”}试试这个
var obj = {
one: function () {
this.two = "yes"
this.three = "??"
}
}
console.log(obj)
console.log(obj.one())
console.log(obj)
你的第一个代码也不起作用。它抛出类型错误:obj未定义 你可以用
var obj = new function(){
this.one = "yes",
this.two = this.one
}; // { one: "yes", two: "yes" }
var obj = {
one: function () {
return new function() {
this.two = "yes",
this.three = this.two
};
}
};
obj.one(); // { two: "yes", three: "yes" }
obj.one() === obj.one(); // false
对于第二个,您可以使用
var obj = new function(){
this.one = "yes",
this.two = this.one
}; // { one: "yes", two: "yes" }
var obj = {
one: function () {
return new function() {
this.two = "yes",
this.three = this.two
};
}
};
obj.one(); // { two: "yes", three: "yes" }
obj.one() === obj.one(); // false
注意每次调用one
都会生成对象的新副本。如果要重复使用上一个
var obj = {
one: (function () {
var obj = new function() {
this.two = "yes",
this.three = this.two
};
return function(){ return obj }
})()
};
obj.one(); // { two: "yes", three: "yes" }
obj.one() === obj.one(); // true
“我知道有可能
varobj={one:“yes”,two:obj.one}
”。否,它抛出TypeError:obj是未定义的
,但可以写入var obj={one:“yes”}obj['two']=obj.one代码>没错,出于一个奇怪的原因,它在调试器中一次性工作,weird@lboyel,我不明白的是,你想实现什么?这是有意义的,奇怪的问题,为什么你必须返回一个新函数,为什么不返回,这项工作,我猜你是在使用构造函数来帮助,但是我不清楚为什么它是这样工作的你是说newfunction(){…}
?它创建一个空对象,并使用设置为该新对象的this
值调用该函数。返回该对象。@lboyel主要原因是定义每个键时,它们不应按特定顺序表示或按顺序添加。这个想法是,它正在一次“建造”。因此,从理论上讲,不可能引用“已经定义”的对象的一部分-对象一次定义完,或者至少没有特定的顺序。请原谅我的无知,但我要说的是,与使用新函数语法创建对象的构造函数相比,使用键值对象表示法的构造函数的工作方式有所不同,因为在这种情况下,您可以引用已定义的属性“this.two”,而在前面的情况下,这是不可能的?@lboyel Yes。不能在对象的文字定义内引用对象。但是,如果您实例化一个函数,构造函数将引用该实例,因此它可以读取以前的属性。