此代码无法动态设置对象属性。 console.log(key, val)
表明循环正确地迭代了options
(与 的键合并defaults
和过滤defaults
):
function Foo(options) {
var defaults = { foo: "bar" },
options = _.defaults(options || {}, defaults);
_.each(_.pick(options, _.keys(defaults)), function(val, key) {
this[key] = val; // Not working
});
this.baz = 'bar'; // Works
};
var foo = new Foo();
foo.hasOwnProperty('foo'); // false
foo.hasOwnProperty('baz'); // true
Q1:为什么它不起作用?this[key]
错了吗?
Q2:(通常)应该如何处理按键敏感问题,即通过{"FOO": "bar"}
?
功能(如果重要)._defaults
:_.pick
和_.keys
。