如何阻止jQuery扩展深层复制来复制我的一些自定义属性?

时间:2013-08-13 22:20:13

标签: javascript jquery extend

我的一些对象上有一些自定义属性,我希望每个对象保持唯一。

然而,一些第三方代码试图使用jQuery来扩展我的一些对象 - 打开了深拷贝标记。

我想防止这些属性被深层复制。我的直觉是覆盖jQuery.extend(和jQuery.fn.extend)函数,其函数忽略了我的属性,但这听起来有些过分。

1 个答案:

答案 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