如果我尝试
$.extend(function_arguments, defaults_arguments)
并非所有default_arguments都会被覆盖。例如,如果其中一个是一个函数(this
),如果function_arguments中的函数类型不同,它将保留在对象中...
$ .extend究竟做了什么?它不应该像array_merge一样工作,而是用于对象吗?
好的,更明确一点:
....function(args){
$.extend(args, {
// here are defaults
foo: this,
abc: 1
});
}
由于某些原因我得到了“foo”的默认值,即使我把它放在args中......
如果我反转对象,例如:
....function(args){
$.extend({
// here are defaults
foo: this,
abc: 1
}, args);
}
我只从args中获取属性,默认值完全缺失:|
答案 0 :(得分:2)
你的.extend
倒退了。默认设置为 first 。
答案 1 :(得分:1)
(我纠正了,这不是它的工作方式)。如果后续指定的对象携带相同的属性,则仅覆盖属性。该函数也不是递归的(因此不会枚举和合并对象的对象属性的属性)您可以根据需要将尽可能多的对象属性组合到第一个对象中。那些多个第三,第四等参数只是你想要合并到第一个中的其他对象。
试试这个:
$.extend(args, foo:this, bar:123);
答案 2 :(得分:0)
jQuery文档中有一个完美的例子:jQuery.extend