检查对象是否具有属性的最佳方法是

时间:2016-08-18 06:17:13

标签: javascript ajax hasownproperty

我想问一下检查ajax响应对象是否具有属性的正确方法。 我用谷歌搜索,我发现有不同的方法可以解决这个问题。

例如:

    if(ajaxResponse.hasOwnProperty('someProperty')){
       //do blah blah
    }

但还有其他方法可以肯定,例如:

    if(typeof ajaxResponse.someProperty !== 'undefined')){
       //do blah blah
    }

所以我猜你有一些利弊可以请与我分享。

谢谢

3 个答案:

答案 0 :(得分:0)

让我们说你的对象就像下面显示的对象......

var person = {
    name: "Nicholas"
};

有很多方法可以用来检查这个....

方法1

person.hasOwnProperty("name")

方法2

if ("name" in person){
    //property exists
}

方法3(不推荐)

//doesn't accurately test for existence
if (person.name){
    //yay! property exists!
}

如果您只是想检查属性的存在,而不一定是它们的价值,那么您有两个安全选项:hasOwnProperty()in运算符。如果要仅检测自己的属性,则应使用hasOwnProperty()属性方法。如果你想测试属性是否存在而不关心它是一个自己的属性还是一个对象属性,那么in运算符就是你要使用的。

Source

答案 1 :(得分:0)

 $.ajax({
            type: "POST",
            url: "frmSample.aspx/LoadSample",
            data: '',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {     
               var jsonData = $.parseJSON(data.d);    
            },
            error: function OnError(xhr) {           
            }
        });

假设如果在ajax调用中发生任何错误,响应将直接转到错误,则不会转到成功。如果结果传递了空数据,则data.d将为''。因此,在解析之前检查data.d是否为空是必要的。 如果结果是Json,则按如下方式解析json

var jsonData = $.parseJSON(data.d);

如果jsonData.length == 0,结果没有属性。在json响应中有很多方法可以检查属性。这是一种简单的方法。 直接检查jsonData。 PropertyName != null或不。

答案 2 :(得分:-2)

imo最简单的方法是:

if (ajaxResponse.someProperty){
//do stuff
}

除了属性是一个布尔值。然后这不一定按照需要工作:)