0

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

然而,一些第三方代码正在尝试使用 jQuery 来扩展我的一些对象——打开了 deep-copy 标志。

我想防止这些属性被深度复制。我的直觉是用忽略我的属性的函数覆盖 jQuery.extend(和 jQuery.fn.extend)函数,但这听起来有点矫枉过正。

4

1 回答 1

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
于 2013-08-28T04:24:35.843 回答