javascript测试对象属性

时间:2012-06-14 14:25:29

标签: javascript

我有一个这样的字符串:

var TheDate = "6.14.2012";

我有一个对象MyObject,其属性可能与该字符串匹配。但是,当我写这篇文章时:

if (MyObject[TheDate] === null || MyObject[TheDate] === 'undefined') { .... }

即使我知道该属性不存在,条件似乎永远不会评估为真。

我错过了什么?

感谢。

4 个答案:

答案 0 :(得分:3)

自有财产的存在

如果您想检查是否存在属性,请使用.hasownProperty() ...

if (MyObject.hasOwnProperty(TheDate)) {

拥有或继承财产的存在

如果属性可以继承,要测试是否存在,请使用in运算符...

if (TheDate in MyObject) {

对自有或继承属性的

nullundefined值测试

如果它不存在,而是值测试,并且您想测试nullundefined,那么请使用此...

if (MyObject[TheDate] == null) {

这将检查nullundefined

答案 1 :(得分:1)

问题在于未定义的引号;)

更改

if (MyObject[TheDate] === null || MyObject[TheDate] === 'undefined') { .... }

if (MyObject[TheDate] === null || MyObject[TheDate] === undefined) { .... }

它应该工作:)

答案 2 :(得分:0)

如果要使用字符串"undefined"而不是undefined对象,则执行此操作的方法是检查“typeof”,它返回一个字符串。在这种情况下,如果您要测试它是否设置为“未定义”:

if ( MyObject[TheDate] === null || typeof MyObject[TheDate] === 'undefined' ) { .... }

答案 3 :(得分:0)

尝试以下

if ( (MyObject[TheDate] === null) || (typeof MyObject[TheDate] === 'undefined') { 
 .... 
}

您正在检查您的属性是否包含字符串'undefined',而不是其值是否为undefined