如何防止jQuery扩展深度副本复制我的一些自定义属性



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

然而,一些第三方代码正试图使用jQuery来扩展我的一些对象,并打开了深度复制标志

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

通过添加的属性

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

最新更新