在javascript中的$.extend(true,{},obj)中,';真的';?
比较两个构造函数时:在javascript中的$.extend(true,{},obj)中,';真的';?,javascript,Javascript,比较两个构造函数时: function C(options, id) { this.id = id; // Extend defaults with provided options this.options = $.extend(true, {}, { greeting: 'Hello world!', image: null }, options); }; 及 true变量是否在$.extends之后必需 第二,语句th
function C(options, id) {
this.id = id;
// Extend defaults with provided options
this.options = $.extend(true, {}, {
greeting: 'Hello world!',
image: null
}, options);
};
及
true
变量是否在$.extends
之后必需
第二,语句
this.$=$(this)
是否必要,因为第一个构造函数没有它,它们也做同样的事情。如果options
有任何嵌套对象,则true
是必要的,如果希望对它们进行深度复制,而不是让新对象引用与原始对象相同的嵌套对象
简单的例子:
var inner = {
foo: "bar"
};
var outer = {
inner: inner
};
var shallowCopy = $.extend({}, outer);
var deepCopy = $.extend(true, {}, outer);
console.log(shallowCopy.inner.foo); // "bar"
console.log(deepCopy.inner.foo); // "bar"
outer.inner.foo = "updated";
console.log(shallowCopy.inner.foo); // "updated"
console.log(deepCopy.inner.foo); // "bar"
实时复制:
var内部={
傅:“酒吧”
};
外部变量={
内:内
};
var shallowCopy=$.extend({},outer);
var deepCopy=$.extend(true,{},outer);
console.log(shallwcopy.internal.foo);//“酒吧”
console.log(deepCopy.internal.foo);//“酒吧”
outer.inner.foo=“已更新”;
console.log(shallwcopy.internal.foo);//“更新”
console.log(deepCopy.internal.foo);//“条形图”
当您需要true
提供的文档中描述的行为时,这是必需的。和this.$=$(this)如果您希望进行该分配,则代码>是必需的。这些都不是绝对需要的。您需要决定在每种情况下代码需要什么。
var inner = {
foo: "bar"
};
var outer = {
inner: inner
};
var shallowCopy = $.extend({}, outer);
var deepCopy = $.extend(true, {}, outer);
console.log(shallowCopy.inner.foo); // "bar"
console.log(deepCopy.inner.foo); // "bar"
outer.inner.foo = "updated";
console.log(shallowCopy.inner.foo); // "updated"
console.log(deepCopy.inner.foo); // "bar"