一、hasOwnProperty()
功能介绍:
判断是否是对象的属性(非继承属性),无法判断原型链上的属性;返回boolean值,true-是对象的属性;false-不是对象的属性;
示例代码:
let Animal = function(name,age){
this.name = name;
this.age = age;
};
//为Animal的原型添加属性
Animal.prototype.speak="wang! wang!";
let dog = new Animal("dog","5");
//判断name是否dog对象的属性
console.log(dog.hasOwnProperty("name"))
//判断speak是否是dog对象的属性
console.log(dog.hasOwnProperty("speak"));
结果:
二、isPrototypeOf()
功能介绍:
判断一个对象是否是另一个对象的原型;
示例代码:
let Animal = function(name,age){
this.name = name;
this.age = age;
};
let cat= new Animal("cay","3");
//判断Animal.prototype 是否是cay的原型
console.log(Animal.prototype.isPrototypeOf(cat))
结果:
三、Obeject.getPrototypeOf()
功能说明:
获取某个对象的原型对象。
注意:此方法为ECMAScript 5新增,支持该方法的浏览器有IE9+,Firefox 3.5+,Safari 5+,Opera 12+,Chrome.
代码示例:
let Animal = function(name,age){
this.name = name;
this.age = age;
};
let pig = new Animal("pig","2");
//获取pig的原型链
console.log(Object.getPrototypeOf(pig) === Animal.prototype)
结果:
四、in操作符
功能介绍:
检测属性是存在于实例还是原型中。
注意:可以和hasOwnProperty()配合使用,判断属性是否是原型中的属性
代码示例:
let Animal = function(name,age){
this.name = name;
this.age = age;
};
Animal.prototype.speak='momo';
let monkey = new Animal("monkey ","12");
//判断name是否是monkey 的属性
console.log("name" in monkey);
//判断speak是否是monkey的属性
console.log("speak" in monkey);
结果:
和hasOwnProperty()一起使用,判断属性是否属于原型中的属性:
function hasPrototypeProperty(object,name){
//不是自身属性,但能够访问到 就是原型属性
return (name in object)&&!object.hasOwnProperty(name);
}