【问题标题】:How to check if a property exists in an object's prototype chain?如何检查对象的原型链中是否存在属性?
【发布时间】:2014-03-21 18:38:24
【问题描述】:

我是 Javascript 的新手,正在努力学习这种语言。在浏览了几篇文章后,我发现为了检查对象的特定属性,我们可以广泛使用以下方法之一。

1] 使用 hasOwnProperty

Object.hasOwnProperty("propertyName")

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

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

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

使用它你也可以在原型链中检查对象的属性。

我的问题是:除了 2] 之外,是否还有其他方法可以检查“propertyName”是否是 Object 原型链中的属性?类似于“hasOwnProperty”且没有循环的东西?

【问题讨论】:

  • if ('propertyName' in myObject),你不用迭代吗?
  • 为什么不if ('propertyName' in obj.prototype) ???

标签: javascript


【解决方案1】:

你可以直接用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

【讨论】:

    【解决方案2】:

    Reflect.has 可以为您制作作品

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-08
      • 2020-06-20
      • 2019-03-27
      • 2016-01-17
      • 2018-01-01
      • 2020-05-08
      • 2020-11-30
      • 1970-01-01
      相关资源
      最近更新 更多