在 JavaScript 中,判断一个 对象 是否有某个 属性 有三种方法,即:使用点或者中括号运算符、使用 in 语句和使用 hasOwnProperty 方法。
obj.attr; obj[attr];
我们可以使用点运算符或者使用中括号运算符,判断对象的属性是否存在,如果不存在,则会返回 undefined,否则,会返回对象的属性的值。
attr in obj;
如果对象 obj 中,含有属性 attr,那么 in 语句返回 true,否则,返回 false。
obj.hasOwnProperty(attr);
参数 | 描述 |
---|---|
attr | 需要判断的属性。 |
hasOwnProperty 方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性,如果存在,则返回 true,否则,返回 false。
使用点运算符或者中括号运算符判断对象是否有属性
<!DOCTYPE html>
<html>
<head>
<title>JavaScript运算符判断对象是否有某个属性</title>
<script type="text/javascript">
console.log("嗨客网(www.haicoder.net)");
function createPerson(name, age, sex){
var person = new Object();
person.name = name;
person.age = age;
person.sex = sex;
person.sayHi = function(){
console.log("I am", this.name, "i am", this.age, "years old", "and my sex is", this.sex);
}
return person;
}
var person = createPerson("HaiCoder", 109, "F");
if (person.name === undefined){
console.log("Person has no name attr");
}else{
console.log("Person has name attr, val =", person.name);
}
if (person["score"] === undefined){
console.log("Person has no score attr");
}else{
console.log("Person has score attr, val =", person.score);
}
</script>
</head>
</html>
程序运行后,控制台输出如下:
我们创建了一个 person 对象,接着,分别使用了点运算符和小括号运算符判断了对象是否有某个属性。因为使用运算符直接访问对象的属性,如果对象的属性不存在,则返回 undefined,存在,则返回属性对应的值。
因此,最后,我们直接使用 if 语句 将属性的值与 undefined 进行比较,如果相等,则表明没有该属性,否则,则表明存在该属性。
使用 in 语句判断对象是否有属性
<!DOCTYPE html>
<html>
<head>
<title>JavaScript in语句对象是否有某个属性</title>
<script type="text/javascript">
console.log("嗨客网(www.haicoder.net)");
function createPerson(name, age, sex){
var person = new Object();
person.name = name;
person.age = age;
person.sex = sex;
person.sayHi = function(){
console.log("I am", this.name, "i am", this.age, "years old", "and my sex is", this.sex);
}
return person;
}
var person = createPerson("HaiCoder", 109, "F");
if ("name" in person){
console.log("Person has name attr, val =", person.name);
}else{
console.log("Person has no name attr");
}
if ("score" in person){
console.log("Person has score attr, val =", person.score);
}else{
console.log("Person has no score attr");
}
</script>
</head>
</html>
程序运行后,控制台输出如下:
我们使用 in 语句,判断对象是否有某个属性,如果返回 true,则表明有该属性,如果返回 false,则表明没有该属性。
我们可以使用点运算符或者使用中括号运算符,判断对象的属性是否存在,如果不存在,则会返回 undefined,否则,会返回对象的属性的值。
我们使用 in 语句,判断对象 obj 中,是否含有属性 attr,如果存在,那么 in 语句返回 true,否则,返回 false。