是否有一个等于hasOwnProperty()的方法可以遍历原型链?

时间:2014-08-25 20:18:36

标签: javascript object hasownproperty

例如我有一个数组,我们称之为myArray,其中:

 var myArray = ['foo', 'bar']; 

即使myArray.join()将返回'foo,bar',检查myArray.hasOwnProperty('join')也将返回false,因为简单hasOwnProperty()将不会遍历原型链。< / p>

有没有办法在遍历原型链的情况下执行相同的功能?

P.S:即使是自定义方法也可以。

2 个答案:

答案 0 :(得分:4)

您可以使用in运算符。

  

in运算符为原型链中的属性返回true。

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

像:

if ('join' in myArray) {
  ...
}

答案 1 :(得分:1)

如果您想确定某个方法或属性在 对象内或对象的原型链中是否可用,您可以使用elclanrs引用的in operator

  
    

in运算符为原型链中的属性返回true。

  

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

在你的例子中你可以写 -

if ('join' in myArray) { // do something }

如果您想确定原型链中属性的类型,那么您也可以使用typeof operator。我找不到一个“简单的英语”引用,这适用于原型操作符,但如果你在你选择的开发工具的控制台中键入以下内容 -

var myArray = ['foo', 'bar']; typeof(myArray.join);

这将按预期返回“function”,表明此运算符可以使用原型函数和属性 - 这也是我可以从我的经验中证明的。 typeof运算符将返回 -

之一
  
    

“undefined”,“object”,“boolean”,“number”,“string”