js高级————原型(prototype)
原型即对象的一个内部属性,原型和对象有一个紧密的联系。
如下图所示:
先创建一个对象
function Person(){},
function Person(){}中的prototype属性指向原型,而原型中的constructor属性指向Person。
如果想要给对象原型添加属性和方法可以通过Person.prototype.属性名=属性值;
Person.prototype.方法名=function(){};
var p1=new Person();
新声明的对象的—prop—属性指向Person的原型先获取Person原型中的属性和方法再获取Person的属性和方法。
如果我们在声明新对象的时候给对象添加了属性和方法,我们在获取属性和方法时将先获取实例化对象里面的方法和属性,再获取Person的原型中的属性和方法,再获取Person中的方法和属性。
原型的指向检测:
我们可以用Person.prototype.isprototype(p1)检测p1是否指向Person
利用p1.constructor == Person可以判断p1的构造器是否指向Person对象,
利用p1.hasOwnProperty(属性名)可以判断该属性是否属于p1对象,
原型的重写:
function Person(){};
Person.prototype={
constructor:Person,
"name":"小明",
"age":18,
"say":function(){
alert("hello world");
}
}
var p1=new Person();
alert(p1.name)//输出“小明”,
我们可以通过这种方式对Person的原型进行重写。
如下图为原型重写图解: