我想创建一个javascript对象,其值“C”复制值“A”:
var obj={
'A':'some complex function returns a string',
'C':obj['A']
};
但它有错误。我试着检查键'A'是否真的创建了:
var f=function(str){
console.log(str);
return str;
};
var obj={
[f('A')]:[f('B')],
"C":obj['A']
};
打印
B
A
然后出错。这意味着'A'已创建,但仍然表示obj ['A']未定义。为什么会这样?
答案 0 :(得分:1)
您当前的尝试显然失败了,因为在代码构造新对象时,obj
变量的值尚未分配。
您可以使用
进行检查var obj = { C: typeof obj}
我想创建一个javascript对象,其值“C”复制值“A”
如果您希望C
始终反映A
的值,您可以使用
var obj = {
A: 'Some value',
get C() {
return this.A;
}
}
或拆分obj
声明
var obj = { A: 'Some Value' };
obj.C = obj.A
答案 1 :(得分:0)
您收到错误是因为当您尝试从内部访问obj
时尚未定义var obj = {
A : 'Hello',
get C() {
return this.A;
}
};
console.log(obj.C);
。
要使代码正常工作,您可以使用getter。
get语法将对象属性绑定到将要的函数 查找该属性时调用。 - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get
此外,您不需要对象属性的引号。
如果属性名称是数字文字,则可以省略引号 或有效的标识符名称。
Cannot read property '_meta' of undefined
答案 2 :(得分:0)
您无法引用尚未创建的变量。你可以这样做。
var obj = { 'A' : 'some complex function returns a string' }
obj['C'] = obj['A']