我創建一個功能,停留在此提示:的Javascript:更新一個對象的屬性
updateObject():應取一個對象,一個鍵和一個值。應該用新值更新對象上的屬性密鑰。如果在創建它時不存在。
這是我的代碼:
function updateObject(object, key, value) {
if (object.key) {
return object.key = value;
} else if (object.key === false) {
return object.key;
}
}
這是它試圖通過測試:
QUnit.test("updateObject() : Should take an object, a key and a value. Should update the property <key> on <object> with new <value>. If <key> does not exist on <object> create it.", function(assert){
var data = {a: "one", b: "two", "hokey": false};
assert.deepEqual(updateObject(data, "b", "three"), {a:"one", b:"three", hokey: false});
var data = {a: "one", b: "two", "hokey": false};
assert.deepEqual(updateObject(data, "ponies", "yes"), {a:"one", b:"two", hokey: false, ponies: "yes"});
var data = {a: "one", b: "two", "hokey": false};
assert.deepEqual(updateObject(data, "a", Infinity), {a:Infinity, b:"two", hokey: false});
});
我在做什麼錯?
如果'key'是一個變量,則需要使用'object [key]'。這是爲了將它與名爲'key'的實際密鑰區分開來。 –
[我如何使用變量作爲名稱向JavaScript對象添加屬性?](https://stackoverflow.com/questions/695050/how-do-i-add-a-property-to- a-javascript-object-using-a-variable-as-the-name) –
我認爲使用括號和點符號是可以互換的嗎? Key實際上是我測試的屬性:第一個語句測試是否存在關鍵屬性,然後將該值推送到關鍵字上。如果不是,則在第二個測試實例中創建key屬性,以查看是否存在關鍵屬性。 – Ashton