这是检查一个对象是否有属性的最佳方法
我想问问哪一个是检查ajax响应对象是否有属性的正确方法。 我GOOGLE了,我发现有不同的方法来解决这个问题。这是检查一个对象是否有属性的最佳方法
例如:
if(ajaxResponse.hasOwnProperty('someProperty')){
//do blah blah
}
但也有其他方式可以肯定,例如:
if(typeof ajaxResponse.someProperty !== 'undefined')){
//do blah blah
}
所以我猜有一些优点和缺点你能请与我分享这些。
感谢
海事组织最简单的方法:
if (ajaxResponse.someProperty){
//do stuff
}
除属性是一个布尔值。然后,这不一定是想有大量的使用,你可以检查这个方法的工作:)
如果属性是可能为'0'的数字,则不起作用。或者可能是空字符串的字符串。或者可能为空。或者可能存在“未定义”值。 – nnnnnn
比方说,你的目标是像下面的一个表现......
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运算符是使用。如果阿贾克斯发生任何错误调用的响应直接进入错误
$.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) {
}
});
假设,它不会去成功。如果空数据作为结果传递,那么data.d将是''。因此,在解析之前检查data.d是否为空是必要的。 如果结果是JSON,解析JSON如下
var jsonData = $.parseJSON(data.d);
如果jsonData.length == 0
,没有属性是有结果。在json响应中检查属性的方法有很多。这是简单的一种方式。 直接检查jsonData。 PropertyName!= null或不是。
hasOwnProperty更可接受我认为 – chenop
@chenop是对的,但你也可以这样做:'var check = ajaxResponse.someProperty ||假;' – Derek
@ chenop是的我也这么认为,但现在我在一个现有的项目中工作,他们使用第二种方式,但他们是聪明的人(当然),所以必须有一个原因,我不能看到此时此刻。 –