hasownproperty和in属性操作

in关键字

作用:用来检查对象中是否存在某个属性(不区分实例属性和原型属性) ####
语法:“属性名” in 对象
代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//01 提供一个构造函数
function Person(name) {
this.name = name;
}
//02 设置构造函数的原型对象的属性
Person.prototype.sayHello = function () {
console.log("hello");
}
//03 创建对象
var p1 = new Person();
//04 使用in关键字判断对象中是否存在以下属性:name age sayHello
console.log("age" in p1); //false
console.log("name" in p1); //true
console.log("sayHello" in p1); //true

对象的hasOwnProperty方法

作用:用来检查对象中是否存在指定的属性(只检查实例属性)

语法:对象.hasOwnProperty(“属性名”)

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//01 提供一个构造函数
function Person(name) {
this.name = name;
}
//02 设置构造函数的原型对象的属性
Person.prototype.sayHello = function () {
console.log("hello");
}
Person.prototype.des = "默认的描述信息";
//03 创建对象
var p1 = new Person();
//04 使用hasOwnProperty方法判断该属性是否是对象的实例属性
console.log(p1.hasOwnProperty("age")); //false
console.log(p1.hasOwnProperty("name")); //true
console.log(p1.hasOwnProperty("sayHello")); //false
console.log(p1.hasOwnProperty("des")); //false

判断某对象中存在且只存在某个原型属性

1
2
3
function isProperty(obj, property) {
return !obj.hasOwnProperty(property) && (property in obj);
}