嵌套对象的 JQuery 扩展 - 在扩展上设置 props 也会更改原始扩展对象
JQuery extension of nested objects - setting props on extension also changes the original extended object
我正在尝试通过扩展另外两个对象来创建对象。
我通过扩展"选项"和"默认"对象来创建设置对象。这有效,但后来我settings.limit = 1000
设置的,我的"default.limit
"也将设置为 1000。
这是故意的吗?如果是,原因是什么,我该如何避免这种情况?
这也是小提琴:https://jsfiddle.net/cq3d55bn/
var defaults = { validate: false, limit: { a: 1, b: 2 }, name: "foo" };
var options = { validate: true, name: "bar" };
// Merge defaults and options, without modifying defaults
var settings = $.extend( {}, defaults, options );
console.log(settings);//everything is correct here
var limit = settings.limit;
limit.a = 1000;
console.log('after',defaults);//here defaults.limit = 1000 !?!?!
我也没想到这种行为,但您可以通过替换来避免它
var limit = settings.limit;
limit.a = 1000;
跟
settings.limit = { a: 1000, b: settings.limit.b };
https://jsfiddle.net/xyt8nsvx/1/
相关文章:
- 使用第二个原型扩展对象
- 如何在不安装npm的情况下一次性扩展对象
- 在下划线.js中扩展对象的最佳实践
- 如何使用Javascript扩展对象'的原型使用声明中的变量
- Javascript扩展对象's原型,但保留旧原型
- 扩展对象导致jQuery错误
- 使用函数调用模式扩展对象.怎样
- 如何使用jquery扩展对象
- jQuery - 扩展对象,同时确保数组成员的完整性
- 用于扩展对象的咖啡脚本
- 下划线JS不会扩展对象
- 猫鼬 + lodash 扩展对象复制数组不正确
- 如何在忽略空值的同时扩展对象
- Javascript 函数,用扩展扩展扩展对象
- 尝试在不可扩展对象上定义属性时,弱映射填充项引发错误
- 嵌套对象的 JQuery 扩展 - 在扩展上设置 props 也会更改原始扩展对象
- 扩展对象原型时出现 jQuery 错误
- 用javascript/angular扩展对象
- 为什么在扩展对象时使用Object.create作为原型
- 扩展对象正在破坏我的代码.我能做什么