0

我有一个对 php 函数的 ajax 调用,该函数可以返回一个字符串、一个数组、一个对象或什么都没有。(是的,我知道将其标准化是理想的,因此只有一种可能的返回类型,但它是我们的首席开发人员选择的第三方库,我无法更改它。)我有没有简单的方法可以测试看看它是否存在?我试过这个:

function doSomething(data)  //data is what's returned by a previous ajax call
     if(data.unavailableItems) {
        // do something
     }
}

do something即使该unavailableItems元素在进入函数的数据数组中不存在,它也会达到目标。我知道我一定错过了一些非常明显的东西,但我一辈子都找不到它。

这是进入函数的数据示例;如您所见,没有名为的元素unavailableItems

在此处输入图像描述

4

2 回答 2

2
if(data != void(0) && data.unavailableItems != void(0)){
  //exists
}

正如诺曼在评论中指出的那样..你应该看看 void 0 是什么意思

于 2013-05-24T20:21:23.840 回答
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);
 }
}
于 2013-05-24T20:21:35.153 回答