Javascript 财产名称丢失?
我正在研究一个新兵训练营前的编码问题。我将一个对象(ourDog)和一个键(fiendly)传递到一个函数中,该函数创建一个新属性(key:value对),并为该键赋值true。 查看输出,添加了属性,但该键没有“friendly”的赋值,它的参数名为key。我希望key:value对为(友好:true)。这是代码Javascript 财产名称丢失?,javascript,object,properties,Javascript,Object,Properties,我正在研究一个新兵训练营前的编码问题。我将一个对象(ourDog)和一个键(fiendly)传递到一个函数中,该函数创建一个新属性(key:value对),并为该键赋值true。 查看输出,添加了属性,但该键没有“friendly”的赋值,它的参数名为key。我希望key:value对为(友好:true)。这是代码 var ourDog = { "name": "Camper", "legs": 4, "tails": 1, "friends": ["everything!"]
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"]
};
function addProperty(anObject, key) {
anObject.key = true;
return anObject;
};
var output = addProperty(ourDog, 'friendly');
console.log(output);
{name: "Camper", legs: 4, tails: 1, friends: Array(1), key: true}
将其从点符号更改为括号
function addProperty(anObject, key) {
anObject[key] = true;
return anObject;
};
当对象的属性是有效的JavaScript标识符时,点表示法用于访问该对象的属性。由于“friendly”是一个字符串,您需要使用括号。更改为
函数addProperty(anObject,key){anObject[key]=true;返回anObject;}代码>传递的是字符串,因此需要使用括号表示法。这有点像你在写anyObject。“friendly”=true
,当我把它从点符号改为括号符号时,它显然不起作用。非常感谢。现在,我必须考虑为什么会这样。我很高兴这项更改能够起作用。这是因为key
是一个变量,当你做anObject.key
时,你说的是用key'key'
(字符串w/value'key'
),当你想在'key'
中存储一个值时,你要么做anObject.key=value
要么做anObject.key=value
['key']=value
。但是,您也可以执行var foo='key'
和anObject[foo]=value
,但如果执行了anObject.foo=value
操作,则将值
与'foo'
键一起存储
function addProperty(anObject, key) {
anObject[key] = true;
return anObject;
};