例如我有一个数组,我们称之为myArray
,其中:
var myArray = ['foo', 'bar'];
即使myArray.join()
将返回'foo,bar'
,检查myArray.hasOwnProperty('join')
也将返回false
,因为简单hasOwnProperty()
将不会遍历原型链。< / p>
有没有办法在遍历原型链的情况下执行相同的功能?
P.S:即使是自定义方法也可以。
答案 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”