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);
},
}
//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);
}
alert(this.name);
}
}
假如以如下方式调用auth类:
var one = new auth();
one.setName("第一个");
one.getNameLength();
var two = new auth();
two.setName("第二个");
two.getNameLength();
one.setName("第一个");
one.getNameLength();
var two = new auth();
two.setName("第二个");
two.getNameLength();
two.getName();
在firefox中得到如下结果:
说明原型中的name在所有实例中是共享的。
结论1:原型对于实例对象来说是共享的。
如果想使各个实例对象有自己的属性,需要在“构造函数”中声明,且需要增加this
auth = function(){
this.name = [];//切记,一定要在前面加上this关键词
};
this.name = [];//切记,一定要在前面加上this关键词
};
再次运行上面的调用代码,将得到如下所示结果。
二、原型继承
原型继承基于原型链
http://www.cnblogs.com/liyatang/archive/2011/05/30/2062611.html