如何检查函数对象(Javascript)中是否存在属性
这个问题是关于带函数对象的JavaScript的 我有一个类似于:如何检查函数对象(Javascript)中是否存在属性,javascript,function,object,properties,Javascript,Function,Object,Properties,这个问题是关于带函数对象的JavaScript的 我有一个类似于: function person(){ this.name = 'Tom', this.Age //not set any value } 我通过“person”函数创建了一个对象: var obj = new person(); obj.name //Tom obj.Age //undefined obj.DOB //also returned undefined 如何区分“obj”中已经存在“Age”属性但没有值,或者“
function person(){
this.name = 'Tom',
this.Age //not set any value
}
我通过“person”函数创建了一个对象:
var obj = new person();
obj.name //Tom
obj.Age //undefined
obj.DOB //also returned undefined
如何区分“obj”中已经存在“Age”属性但没有值,或者“DOB”根本不存在。您只想检查它是否存在?如果使用
语句,请使用
if (obj.Age) {
// do stuf
} else {
// do other stuff
}
undefined作为falsy值返回if语句,因此如果它不在那里,它将执行else语句。如果它确实存在,则第一个块。obj.Age
不存在。如果需要,则必须将其初始化为null
或undefined
然后你可以像这样检查
if(obj.hasOwnProperty('Age')){
}
JavaScript区分了null和undefined,null是一个表示故意非值的值(只能通过null关键字访问),undefined是一个类型为undefined的值,表示未初始化的值,也就是说,一个值甚至还没有被赋值
你可以简单地使用
if(this.hasOwnProperty('Age')){
}
或
您可以将其设置为。Age=null;(null!==未定义)false,0,空字符串(“”)、NaN、null和undefined都将变为false。请注意,这两个选项的行为略有不同。如果Age
位于对象中的任何位置(包括原型中),则第二个选项将为true。只有Age
是对象的直接属性(而不仅仅是原型上)时,第一个选项才为true。另外,请注意,属性可以存在,但其赋值为未定义
,因此无法测试未定义
,以查看该属性是否存在。.hasOwnProperty()
可能是测试给定属性是否已专门分配给此对象的最佳选择。无论如何,如果您不初始化'Age'
属性,它将不起作用,因此必须初始化谢谢您的回答。我尝试使用“hasOwnProperty”和“in”来区分。但返回的值相同未定义。“hasOwnProperty”仅用于Javascript中的普通对象。这是一个不正常的“函数对象”。因此它不起作用。
if('Age' in this){
}