Javascript原型相关的函数

来源:互联网 发布:射雕英雄传 知乎 编辑:程序博客网 时间:2024/05/18 00:23

一、isPrototypeOf

测试一个对象的原型是否是一个类的原型的方法。例如
function Person(){}
Person.prototype.name=”Leo”;
var p1=new Person();
Person.prototype. isPrototypeOf(p1);//将会返回true,这句代码的意思是,Person的
//原型是否是p1的原型


二、Object.getPrototypeOf

获取对象原型的方法。
例如上面的例子:alert(Object.getPrototypeOf(p1)==Person.prototype);//返回true
此方法支持的浏览器有IE9+ 、Firefox3.5+ 、Safari5+ 、Opera12+ 、Chrom


三、hasOwnProperty

检测属性是在实例还是原型中的方法。示例:
function Person(){}
Person.prototype.name=”Leo”;
var p=new Person();
console.log(p. hasOwnProperty(“name”));//打出false
p.name=”Linda”;
console.log(p. hasOwnProperty(“name”));//打出true


四、in操作符

示例:
function Person(){}
Person.prototype.name=”Leo”;
var p=new Person();
console.log( “name” in p);//打出true
p.name=”Linda”;
console.log( “name” in p);//打出false
结论:in是检测一个属性是否在一个对象中的,无论这个属性是在实例还是原型,只要这个属性存在于对象中,并且是可访问的,就返回true于是,根据hasOwnProperty和in操作符,我们可以判断原型是否有某个属性
function hasPrototypeProperty(obj,property){
return !obj. hasOwnProperty(property) && (property in obj);
}


五、Object.keys()

获取所有可枚举的实例属性,注意,获取的是实例属性,不是原型的

示例:
function Person(){
this.name= “Leo “;
}
Person.prototype.age=18;
var person=new Person();
console.log(Object.keys(person));//打印出name


六、Object.getOwnPropertyNames()

获取所有实例属性,无论属性是否可枚举。在高版本浏览器中可能效果跟keys一样,只能获取可枚举的实例属性。
示例:
function Person(){
this.name= “Leo “;
}
Person.prototype.age=18;
var person=new Person();
console.log(Object. getOwnPropertyNames (person));//打印出name或
// name,constructor

注意这里获取的也是实例的属性,但是此方法可以将不可枚举的属性也获得,例如constructor,在高版本浏览器可能获取不到constructor

0 0