instanceof运算符Vs obj.constructor

时间:2017-11-15 06:24:13

标签: javascript

我想知道检查对象是否是类/构造函数的实例的这两种方法之间是否存在任何差异。我搜索了它并发现了这两种方式。

obj instanceof SomeConstructor

obj.constructor === SomeConstructor

所以我的问题是: 两者之间有什么区别吗?

哪一个是更好的做法?

另外,还有其他方法比这两个更好吗?

2 个答案:

答案 0 :(得分:1)

在网上找到了这个,

<强>的instanceof

instanceof运算符测试构造函数的prototype属性是否出现在对象的原型链中的任何位置。

构造

返回对创建实例对象的Object构造函数的引用。请注意,此属性的值是对函数本身的引用,而不是包含函数名称的字符串。

参考

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/instanceof

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/constructor

答案 1 :(得分:0)

根据@Nisal Edu的解释,instanceof携带原型存在于对象链中,否则返回false。 obj.constructor === Object是每个返回true的对象的必要值。

这意味着

obj.constructor === Object // always return true
obj instanceof Object //return false if prototype is nowhere in object's prototype chain