无论 的值如何,如何确定对象是否具有x
已定义的属性?y
x.y
我目前正在使用
if (typeof(x.y) !== 'undefined')
但这似乎有点笨拙。有没有更好的办法?
无论 的值如何,如何确定对象是否具有x
已定义的属性?y
x.y
我目前正在使用
if (typeof(x.y) !== 'undefined')
但这似乎有点笨拙。有没有更好的办法?
如果您正在测试对象本身(不是其原型链的一部分)上的属性,您可以使用.hasOwnProperty()
:
if (x.hasOwnProperty('y')) {
// ......
}
您也可以使用in
运算符来测试继承的属性。
if ('y' in x) {
// ......
}
Underscore.js 或 Lodash
if (_.has(x, "y")) ...
:)
你可以像这样修剪一下:
if ( x.y !== undefined ) ...
我的原始代码的一个功能
if ( typeof(x.y) != 'undefined' ) ...
在某些情况下可能有用的是,无论是否x
存在,使用都是安全的。使用 gnarf 答案中的任何一种方法,首先应该测试x
是否存在任何疑问。
因此,也许所有三种方法都有自己的技巧。