原型prototype
时间:2010-12-18 来源:fire8119
创建对象的过程分三步
1.创建一个新对象{}
2.{}._proto_=fn.prototype;
3.fn.call({});
js是基于原型的继承。那么我们能否自己定义一个对象当作原型,然后将这个自己创建的原型设置给一个对象,那么这个对象不就继承的原型的所有方法和属性?
演化过程1:
var myprototype = {
sayHello:function(){
alert("hello "+this.name);
}
}
function f(name){//扮演构造函数
this.name = name;
}
f.prototype = myprototype;
var obj = new f("eric");
演化过程2:
function Wrapper(o,args){
function f(name){
this.name= name;
}
function x(){
f.apply(this,args);
}
x.prototype = o;
return new x();
}
var obj = Wrapper(myprototype,['eric']);
obj.sayHello();
演化过程3:
var myprototype = {
ctr:function(name){
this.name=name;
},
sayHello:function(){
alert("hello "+this.name);
}
}
function Wrapper(o,args){
function f(){
o.ctr.apply(this,args);
}
f.prototype = o;
reutrn new f();
}