javascript 继承

//对象工厂模式
function createCar(color,doors,mpg){
    var tmpCar = new Object();
    tmpCar.color = color;
    tmpCar.doors = doors;
    tmpCar.mpg = mpg;
    tmpCar.showColor = function() { alert(this.color); };
    return tmpCar;
}
var car1 = createCar("red",4,20);
var car2 = createCar("blue",2,15);
car1.showColor();
car2.showColor();
//问题:这样写每个对象都有自己的showColor函数

function showColor(){ alert(this.color); }
function createCar(color,doors,mpg){
    var tmpCar = new Object();
    tmpCar.color = color;
    tmpCar.doors = doors;
    tmpCar.mpg = mpg;
    tmpCar.showColor = showColor;
    return tmpCar;
}

//用构造函数的方式,去掉函数内的临时变量
function Car(color,doors,mpg){
    this.color = color;
    this.doors = doors;
    this.mpg = mpg;
    this.showColor = showColor;
}
//问题:showColor函数不像对象的方法

//原型链
function Car(color,doors,mpg){
    this.color = color;
    this.doors = doors;
    this.mpg = mpg;
}
Car.prototye.showColor = function() { alert(this.color); }

 

 //继承

//原型链

function Person(name){
    this.name=name;
}
Person.prototype.ShowName=function(){
    return "hello "+this.name;
};
Person.prototype.ShowPara=function(para){
    return "your para is:" + para;
}

 

function User(name,password){
    this.name=name;
    this.password=password;
}
User.prototype=new Person();
User.prototype.ShowPwd=function(){
    return "your pwd: "+this.password;
};

var user=new User("terry",123456);
alert(user.ShowName());
alert(user.ShowPwd());
alert(user.ShowPara("ookk"));

 

//call方法

function Person(name){
    this.name=name;
    this.ShowName=function(){
        return "hello "+this.name;
    };
}
Person.prototype.ShowPara=function(para){
    return "your para is:" + para;
}

 

function User(name,password){
    Person.call(this,name);
    this.name=name;
    this.password=password;
}
User.prototype.ShowPwd=function(){
    return "your pwd: "+this.password;
};

var user=new User("terry",123456);
alert(user.ShowName());
alert(user.ShowPwd());
//alert(user.ShowPara("ookk"));  //错误,  call没有包括prototype扩展的方法

 

posted @ 2010-04-08 14:42  DaCHun  阅读(147)  评论(0编辑  收藏  举报