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...
答案 0 :(得分:4)
hasOwnProperty()
仅检查用户创建的对象吗?
它适用于在其原型链上具有该方法的所有对象(除了某些主机对象之外的所有对象,即一些IE对象,以及使用Object.create(null)
创建的对象,以及一些其他外来方式)。
String
和Object
默认情况下不会直接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;