[英]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.