繁体   English   中英

确定JS对象的原型

[英]Determining a JS object's prototype

确定JavaScript对象原型的最佳方法是什么? 我知道以下两种方法,但我不确定在跨浏览器支持方面哪种方式是“最佳”(或者如果有更好的首选方式)。

if (obj.__proto__ === MY_NAMESPACE.Util.SomeObject.prototype) {
    // ...
}

要么

if (obj instanceof MY_NAMESPACE.Util.SomeObject) {
    // ...
}

instanceof是首选。 __proto__是非标准的 - 具体来说,它在Internet Explorer中不起作用。

Object.getPrototypeOf(obj)是一个ECMAScript 5函数,它与__proto__执行相同的操作。

请注意, instanceof搜索整个原型链,而getPrototypeOf只查找一步。

一些使用说明:

new String() instanceof String  // true

(new String()).__proto__ == String // false!
                                   // the prototype of String is (new String(""))
Object.getPrototypeOf(new String()) == String // FALSE, same as above

(new String()).__proto__ == String.prototype            // true! (if supported)
Object.getPrototypeOf(new String()) == String.prototype // true! (if supported)

instanceof是标准的,而__proto__则不是(但它很可能是ECMAScript 6中的标准 )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM