JS原型的认识和原型继承

原型在JS中具有很重要的地位,但如果给出它的定义还是比较困难的,还是以首先定义一个类开始吧。

 一、原型实例

function auth() {
    //this.name = 'hello';
    alert(this.name);
}
auth.prototype = {
    name: [],
    getNameLength: function () {
        alert(this.name.length);
    },
    setName: function (n) {
        this.name.push(n);
    },
    getName: function () {
        alert(this.name);
    }

}

 假如以如下方式调用auth类:

var one = new auth();
one.setName("第一个");
one.getNameLength();
var two = new auth();
two.setName("第二个");
two.getNameLength();

two.getName();

 在firefox中得到如下结果:

 说明原型中的name在所有实例中是共享的。

结论1:原型对于实例对象来说是共享的。

如果想使各个实例对象有自己的属性,需要在“构造函数”中声明,且需要增加this

auth = function(){
      this.name = [];//切记,一定要在前面加上this关键词
};

再次运行上面的调用代码,将得到如下所示结果。

   二、原型继承

 原型继承基于原型链

http://www.cnblogs.com/liyatang/archive/2011/05/30/2062611.html 

原文地址:https://www.cnblogs.com/xqlcrystal/p/2381999.html