我们在实际的开发中,为了提高工作效率,把公有的属性和方法都放到一个地方,当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(){

    }
posted on 2015-11-09 23:54  冬刻忆  阅读(171)  评论(0)    收藏  举报