有没有办法来“隐藏”不可枚举的属性添加到JavaScript对象,工程跨浏览器?如何在JavaScript中为IE8添加非可枚举属性?
对于大部分现代浏览器,你可以这样做:
Object.defineProperty(obj, '__id__', { enumerable: false, value: id++ });
对于没有Object.defineProperty
一些老非IE浏览器,你可以使用the __proto__
hack。
没有这些,但是,工作的IE浏览器。有没有办法在IE8中实现这一点(如果IE7也很酷,但没有必要)?
的主要目标是能够跟踪属性添加到任何JavaScript {}
对象,但这样当你调用JSON.stringify(obj)
,它不会包含在财产。我意识到你可以添加自定义的JSON替换函数(基本上扩展了JSON.stringify
的功能),但我不是那么喜欢它,因为它意味着任何时候你将这些跟踪的JavaScript对象序列化为JSON,你必须知道/记得添加替代功能是非常不切实际的。
有没有办法做到这一点?
你说IE8 +,但不'Object.defineProperty()'在IE9工作? – nnnnnn
噢,我想我只是意味着IE8。如果有支持IE7的方式也将是真棒,但基本上只是如何做到这一点的IE8。更新的问题。 –