如何检查是否创建了这样的匿名对象:
var myObj = {
prop1: 'no',
prop2: function () { return false; }
}
确实有prop2定义?
prop2
将始终定义为函数,但对于某些对象,它不是必需的,也不会被定义。
我尝试了这里建议的:How to determine if Native JavaScript Object has a Property/Method?,但我认为它不适用于匿名对象。
typeof myObj.prop2 === 'function';
会告诉您函数是否已定义。
if(typeof myObj.prop2 === 'function') {
alert("It's a function");
} else if (typeof myObj.prop2 === 'undefined') {
alert("It's undefined");
} else {
alert("It's neither undefined nor a function. It's a " + typeof myObj.prop2);
}
你想要hasOwnProperty()
:
var myObj1 = {
prop1: 'no',
prop2: function () { return false; }
}
var myObj2 = {
prop1: 'no'
}
alert(myObj1.hasOwnProperty('prop2')); // returns true
alert(myObj2.hasOwnProperty('prop2')); // returns false
参考文献:Mozilla,Microsoft,phrogz.net。
typeof myObj.prop2 === 'function'
如果属性名称不是动态/生成的myObj.hasOwnProperty('prop2')
如果属性名称是动态的,只检查它是否是直接属性(而不是原型链)'prop2' in myObj
,并检查原型链你是什么意思“匿名对象?” myObj
不是匿名的,因为你已经为变量分配了一个对象文字。你可以测试一下:
if (typeof myObj.prop2 === 'function')
{
// do whatever
}
一种方法必须是if (typeof myObj.prop1 != "undefined") {...}