下面的代码有什么区别吗:
inst instanceof Constr
和
inst.__proto__ === Constr.prototype
例如:
var xyz = {}
xyz instanceof Object
和
xyz.__proto__ === Object.prototype
?如果是这样,有什么区别,哪个是首选?
最佳答案
__proto__
不是 ECMAScript 5 规范的一部分,您无法保证将来会得到支持。访问对象原型(prototype)的标准方法是访问构造函数的原型(prototype),或者更好的是,Object.getPrototypeOf。 (但这在 IE8 上不起作用)。
instanceof检查构造函数的原型(prototype),同时“测试对象原型(prototype)链中 constructor.prototype 的存在。”。
如果你的目标是检查一个对象是否是一个特定类的实例,如果它不是一个直接实例对你来说没问题,那么你应该使用 instanceof
操作符:它真的只是为此而制作。
关于javascript 检查对象原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17365126/