我们在实际的开发中,为了提高工作效率,把公有的属性和方法都放到一个地方,当new对象的时候就一次完成了,在js中的prototype(原型)就可以实现。
创建每一个函数的时候都有一个prototype属性,这个属性其实是一个指针,这个指针总是指向一个对象。这个对象的作用就是将特定的属性和方法包含在这个对象内,所有实例能共享这个对象的属性和方法。
实例如下:
第一步:创建一个构造函数
function Person(){
}
既然说到在js中创建的对象有一个prototype属性,那我们就调用这个属性。
第二部:Person对象调用prototype属性,这个属性就是一个指针,比如将这个Person.prototype赋值给obj,那么这个指针就指向obj。
var obj = Person.prototype;
第三步:将共同、可以共享的属性和方法包含在这个obj对象内
比如在实际生活中,有些人的身高、年龄等一些属性是相同的,也有可能他们的爱好都是骑车、打球等(那么这些骑车、打球等就是一些方法)。然后我们在上面创建的obj对象基础上,将特定的属性和方法包含在这个对象内,所有实例能共享这个对象的属性和方法。
obj.age = 18;
obj.height = 175;
obj.aiHao = function(){
alert("我能够打篮球");
}
第四步:在模板对象Person下new两个对象来看实际效果
var zhangsan = new Person();
var lisi = new Person();
alert(zhangsan.age);
alert(lisi.age);
zhangsan.aiHao();
lisi.aiHao();
alert(zhangsan.aiHao==lisi.aiHao); 输出值为true
在js中可以通过对象的原型来实现继承,简称原型继承。
补充:关于构造函数、原型对象、实例对象这三者之间的关系
构造函数.prototype = 原型对象
原型对象.constructor = 构造函数
alert(obj.constructor)
输出值为
function Person(){
}
浙公网安备 33010602011771号