繁体   English   中英

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

[英]Which is the best way to check if an object has property

我想问问哪种是检查ajax响应对象是否具有属性的正确方法。 我用谷歌搜索,发现有多种方法可以解决此问题。

例如:

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

但是还有其他确定的方法,例如:

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

因此,我猜有一些优点和缺点,请您与我分享。

谢谢

假设您的对象类似于下面显示的对象...

var person = {
    name: "Nicholas"
};

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

方法1

person.hasOwnProperty("name")

方法二

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

方法3(不推荐)

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

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

资源

 $.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。

imo最简单的方法是:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM