如何检查对象的原型链中是否存在属性?

时间:2014-03-21 18:38:25

标签: javascript

我是Javascript的新手并试图学习这门语言。经过几个帖子后,我发现为了检查对象的特定属性,我们可以广泛使用以下方法之一。

1]使用hasOwnProperty

Object.hasOwnProperty(" propertyName的&#34)

但是,这不会检查从Object的原型链继承的属性。

2]遍历所有属性并检查属性是否存在。

for(propertyName in myObject) {
    // Check if "propertyName" is the particular property you want.
}

使用此功能,您也可以检查原型链中对象的属性。

我的问题是:是否有一种方法而不是2]我可以检查" propertyName"是Object的原型链中的属性?类似于" hasOwnProperty"没有循环?

2 个答案:

答案 0 :(得分:5)

你可以直接用in检查属性,它也会检查原型链,就像这样

if ('propertyName' in myObject)

一个例子

var obj = function() {};

obj.prototype.test = function() {};

var new_obj = new obj();

console.log( 'test' in new_obj ); // true
console.log( 'test22222' in new_obj ); // false
console.log( new_obj.hasOwnProperty('test') ); // false

FIDDLE

答案 1 :(得分:0)

Reflect.has 可以为你工作

console.log(Reflect.has({}, 'toString')); // true