如何使用hasOwnProperty检查属性

How to check property with hasOwnProperty?

本文关键字:属性 检查 hasOwnProperty 何使用      更新时间:2023-09-26

hasOwnProperty()只检查用户创建的对象吗?

var myObj = {};
myObj.hasOwnProperty('toString'); // returns false

我想知道toString()在哪个原型中使用?

String.hasOwnProperty('toString');// it's too returns false
Object.hasOwnProperty('toString');// it's too returns false

那么,如何检查toString()或其他东西在原型链中是什么?

var myArr = ['a','b','c'];
myArr.hasOwnProperty('length');
// returns true, why? but it is of Array or Object...

hasOwnProperty()只检查用户创建的对象吗?

它适用于所有在其原型链上具有该方法可用的对象(所有对象,除了某些主机对象,即一些IE对象和用Object.create(null)创建的对象,以及一些其他奇特的方式)。

默认情况下,

StringObject没有直接设置toString()(尽管可以自己赋值,但不建议这样做)。

他们确实在他们的原型链上有它。由于使用了匹配的第一个属性查找,并且String是一个构造函数,因此它将在Function.prototype上找到它。您可以通过执行…

来确认。
String.toString == Function.prototype.toString

其他对象有自己的toString(),这取决于在哪个上下文中什么最有意义。

var myArr = ['a','b','c'];
myArr.hasOwnProperty('length');// returns true, why? but it is of Array or Object...

数组有一个直接的length属性

如果你想知道一个对象在它的原型链上是否有一个可用的属性,你可以使用in操作符…

var hasProp = 'toString' in String;