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 

 

你可能感兴趣的:(JS原型的认识和原型继承)