设置属性值

时间:2014-09-12 21:05:37

标签: javascript

我需要更改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

我错过了什么?可能是对象被某种程度上锁定了吗?

1 个答案:

答案 0 :(得分:0)

通常,当您在代码中看到SomeObject.get('attrName')之类的内容时,肯定符号SomeObject实际上不是普通的JS对象。许多流行的框架(包括Backbone)和库(jQuery)使用以下方法:它们不是增强本机/主机对象,而是将它们放入正确形成的容器中('赞成组合而不是继承'原则)。

最重要的是,虽然可以为这些包装器对象分配属性(使用括号或点表示法),但它没有意义。相反,必须使用正确的setter方法 - 最常见的是set()

在你的情况下,这解决了......

test.set('TestProp', 'some_kisses_value');

...其中第一个参数是属性/属性的名称,第二个参数是其值。