我的一些对象上有一些自定义属性,我希望每个对象保持唯一。
然而,一些第三方代码试图使用jQuery来扩展我的一些对象 - 打开了深拷贝标记。
我想防止这些属性被深层复制。我的直觉是覆盖jQuery.extend(和jQuery.fn.extend)函数,其函数忽略了我的属性,但这听起来有些过分。
答案 0 :(得分:1)
通过
添加的属性Object.defineProperty
将枚举参数设置为false,不会被jQuery.extend捕获。
a = { b: 'b'};
Object.defineProperty(a,'bb',{ get: function() {return "bb";},enumerable: false});
c = {};
jQuery.extend(c,a,a,a,a);
a.b // "b"
a.bb // "bb"
c.b // "b"
c.bb // undefined