我需要区分对象上的“纯”JavaScript 属性和像innerHTML
or之类的本机属性style
。
在 Safari 中,我可以使用Object.getOwnPropertyDescriptor()
并检查该configurable
属性(对于特殊属性为 false),但是不幸的是,这在 Chrome 或 Firefox 上没有相同的结果(返回属性是可配置的)。
在不同的浏览器上尝试这个小提琴以查看问题。
是否有可靠的方法来确定该财产是否为特殊的内部财产?
更新
我注意到,undefined
如果您尝试获取本机属性的属性描述符,Firefox 实际上会返回,因此这可能会正常工作。剩下的就是 Chrome,不幸的是它返回了一个看起来与普通属性完全一样的属性描述符。
例如,这是innerHTML
Chrome 中的描述符:
{"value":"","writable":true,"enumerable":true,"configurable":true}
...这里是一个名为“test”的空字符串属性:
{"value":"","writable":true,"enumerable":true,"configurable":true}
完全相同的。:(