您的位置:首页 > Web前端 > JavaScript

JavaScript中检测对象是否包含某属性

2018-01-22 11:38 204 查看
实例demo

function Person(){
}
Person.prototype.name = "xiaohua";
var person1 = new Person();

console.log(person1.name);  //xiaohua
console.log(person1.hasOwnProperty("name")); //false
console.log("name" in person1); //true

person1.name = "xiaoming";
alert(person1.name); //"xiaoming" ——来自实例
alert(person1.hasOwnProperty("name")); //true
alert("name" in person1); //true


判断name属性是否存在于原型中

/*由于in 操作符只要通过对象能够访问到属性就返回true,hasOwnProperty()只在属性存在于
实例中时才返回true,因此只要in 操作符返回true 而hasOwnProperty()返回false,就可以确
定属性是原型中的属性*/
function hasPrototypeProperty(object, name){
return !object.hasOwnProperty(name) && (name in object);
}


hasPrototypeProperty():原型属性

/*在这里,name 属性先是存在于原型中,因此hasPrototypeProperty()返回true。当在实例中
重写name 属性后,该属性就存在于实例中了,因此hasPrototypeProperty()返回false。即使原
型中仍然有name 属性,但由于现在实例中也有了这个属性,因此原型中的name 属性就用不到了*/
function Person(){
}
Person.prototype.name = "xiaohua";
var person = new Person();
alert(hasPrototypeProperty(person, "name")); //true
person.name = "xiaoming";
alert(hasPrototypeProperty(person, "name")); //false
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: