我有一个对php函数的ajax调用,它可以返回一个字符串,一个数组,一个对象,或者什么也没有。 (是的,我知道将它标准化是理想的,因此只有一种可能的返回类型,但它是由我们的主要开发者选择的第三方库,我无法改变它。)有一种简单的方法我可以测试看它是否存在?我试过这个:
function doSomething(data) //data is what's returned by a previous ajax call
if(data.unavailableItems) {
// do something
}
}
但即使进入函数的数据数组中不存在do something
元素,它也会触及unavailableItems
。我知道我必须遗漏一些非常明显的东西,但我不能为我的生活找到它。
以下是进入该功能的数据示例;你可以看到没有名为unavailableItems
的元素:
答案 0 :(得分:2)
if(data != void(0) && data.unavailableItems != void(0)){
//exists
}
诺曼在评论中指出......你应该结帐what void 0 means
答案 1 :(得分:1)
用于检查对象是否包含属性的好工具是obj.hasOwnProperty(prop)
if(data.hasOwnProperty("unavailableItems")){
}
另请注意,John Resig为obj.hasOwnProperty
function hasOwnProperty(obj, prop) {
var proto = obj.__proto__ || obj.constructor.prototype;
return (prop in obj) &&
(!(prop in proto) || proto[prop] !== obj[prop]);
}
if ( Object.prototype.hasOwnProperty ) {
var hasOwnProperty = function(obj, prop) {
return obj.hasOwnProperty(prop);
}
}