Oma*_*mar 133 javascript
如何检查是否创建了这样的匿名对象:
var myObj = { 
    prop1: 'no',
    prop2: function () { return false; }
}
确实有prop2定义?
prop2 将始终定义为函数,但对于某些对象,它不是必需的,也不会被定义.
我尝试了这里建议的内容:如何确定Native JavaScript Object是否具有属性/方法?但我认为它不适用于匿名对象.
Sea*_*ira 252
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);
}
art*_*ung 38
你想要hasOwnProperty():
var myObj1 = { 
	prop1: 'no',
	prop2: function () { return false; }
}
var myObj2 = { 
	prop1: 'no'
}
console.log(myObj1.hasOwnProperty('prop2')); // returns true
console.log(myObj2.hasOwnProperty('prop2')); // returns false
	参考文献:Mozilla,Microsoft,phrogz.net.
Pet*_*eng 14
typeof myObj.prop2 === 'function' 如果属性名称不是动态/生成的myObj.hasOwnProperty('prop2') 如果属性名称是动态的,只检查它是否是直接属性(而不是原型链)'prop2' in myObj 如果属性名称是动态的,则检查原型链你是什么意思"匿名对象?" myObj由于您已将对象文字指定给变量,因此不是匿名的.你可以测试一下:
if (typeof myObj.prop2 === 'function')
{
    // do whatever
}