有没有办法将“隐藏”的不可枚举属性添加到跨浏览器工作的 JavaScript 对象?
对于大多数现代浏览器,您可以执行以下操作:
Object.defineProperty(obj, '__id__', { enumerable: false, value: id++ });
对于一些没有. Object.defineProperty
___proto__
然而,这些都不适用于 IE。有没有办法在 IE8 中实现这一点(如果 IE7 也很酷,但不是必需的)?
主要目标是能够将跟踪器属性添加到任何 JavaScript{}
对象,但是当您调用 时JSON.stringify(obj)
,它不会包含在属性中。我意识到你可以添加自定义 JSON 替换函数(基本上是扩展JSON.stringify
功能),但我不是这个的忠实粉丝,因为这意味着任何时候你将这些跟踪的 JavaScript 对象序列化为 JSON,你必须知道/记得添加那个替换功能,这是非常不切实际的。
有没有办法做到这一点?