我需要更改javascript属性的值,但似乎没有任何效果。这就是我试过的:
var test = allProducts[i]; // allProducts[i] comes from the database
console.log("TestProp BEFORE = " + test.get("TestProp"));
这会打印出我的TestValue
。
现在我尝试更改值,我尝试了下面的所有3种语法建议(当然不是同时):
test.TestProp = "kisses";
test["TestProp"] = "kisses2";
test['TestProp'] = "kisses3";
console.log("TestProp AFTER = " + test.get("TestProp"));
但这又打印了我的TestValue
。
我错过了什么?可能是对象被某种程度上锁定了吗?
答案 0 :(得分:0)
通常,当您在代码中看到SomeObject.get('attrName')
之类的内容时,肯定符号SomeObject
实际上不是普通的JS对象。许多流行的框架(包括Backbone)和库(jQuery)使用以下方法:它们不是增强本机/主机对象,而是将它们放入正确形成的容器中('赞成组合而不是继承'原则)。
最重要的是,虽然可以为这些包装器对象分配属性(使用括号或点表示法),但它没有意义。相反,必须使用正确的setter
方法 - 最常见的是set()
。
在你的情况下,这解决了......
test.set('TestProp', 'some_kisses_value');
...其中第一个参数是属性/属性的名称,第二个参数是其值。