如果被自己的财产覆盖,如何获得对象的自有属性?

时间:2013-09-15 20:47:57

标签: javascript

例如,如果我覆盖constructor属性,如何获取原始值?

var obj = {}
obj.constructor == Object // true
obj = {"constructor": 1}
obj.constructor == Object // false, how to get pointer to Object?

让我们说,我得到了对象,而且它已经在"constructor": 1,我无法保存指向原始constructor的指针

1 个答案:

答案 0 :(得分:1)

ES5介绍了Object.getPrototypeOf()

Object.getPrototypeOf(obj).constructor == Object

ES6草案目前包含__proto__属性,该属性由大多数主流浏览器实现(并且很可能在IE11中发布),但现在它被认为是非标准的:

obj.__proto__.constructor == Object

当然,Object.getPrototypeOf()是一种更加跨浏览器的标准方法,足以满足您的使用需求。