1

例如我有一个数组,让我们myArray在哪里调用它:

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

即使,myArray.join()会返回'foo,bar',检查myArray.hasOwnProperty('join'),也会返回false,因为根本hasOwnProperty()不会遍历原型链。

有没有办法通过遍历原型链来执行相同的功能?

PS:即使是自定义方法也可以。

4

2 回答 2

4

您可以使用in运算符。

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

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

喜欢:

if ('join' in myArray) {
  ...
}
于 2014-08-25T20:24:23.340 回答
1

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

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

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

在您的示例中,您可以编写-

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

如果要确定原型链中属性的类型,还可以使用typeof 运算符。我找不到适用于原型运算符的“简单英语”引文,但如果您在您选择的开发工具的控制台中键入以下内容 -

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

这将按预期返回“函数”,证明该运算符确实具有原型函数和属性 - 这也是我可以根据我的经验证明的。typeof 运算符将返回以下之一:

“未定义”、“对象”、“布尔”、“数字”、“字符串”

于 2014-08-25T20:26:35.103 回答