我试图合并对象,或者将新对象添加到现有对象。 我已经得到它使用jQuery合并,但它是不会动态工作的属性的名称。动态合并对象 - 对象属性名称问题
参数filters
是一个对象,例如{test:123}
。
当调用filter({test:123});
时,我想要filter
函数动态添加对象到全局对象。 (当然不能使用push()
因为其不是数组)
this.filter = function(filters) {
for (var key in filters) {
$.extend(settings.filter, {key:filters[key]});
}
};
的问题是,“钥匙”变成“键”作为属性的名称。当它应该是“测试”作为属性名称;我无法获取要动态创建的属性名称。
我们的目标是让用户来触发功能是这样的:
filter({test:123,test2:1321,test55:4})
和动态对象添加到全局设置对象,而用户与对象本身插手。
你为什么做这样的说法,而不是仅仅'$ .extend(settings.filter,过滤器)'? –
......你描述的问题的确切原因很简单,对象初始值设定语法不可能知道你实际上想要使用'key'变量的值而不是名为'key'的实际标识符的值。有关StackOverflow的许多问题都解决了如何使用动态密钥创建对象,但这一切都在旁边,因为您的方法并不是首先要做到的。 –
@cookiemonster谢谢。我不知道为什么我试图做到这一点,我正在考虑数组,通常在PHP我foreach或循环它们在一起,但$。扩展(settings.filter,filters);解决了这个问题,使其变得简单。谢谢。 – timothymarois