js prototype 继承

//继承
function inherits(ctor,superCtor){
    ctor.super_ = superCtor;
    ctor.prototype = Object.create(superCtor.prototype,{
        constructor : {
            value : ctor,
            emumerable : false,
            writable : true,
            configurable : true
        }
    })
};


var Person = function(name){
    this.name = name;
};


Person.prototype.sayName = function(){
    console.log("Hi my name is "+this.name);
};

Person.prototype.shoutName = function(){
    console.log("Hi my name is "+this.name + "!");
};

/*Person.sayName = function(){
    console.log("Hi my name is "+this.name);
}*/

var john = new Person("john");
var bobby = new Person("bobby");

john.sayName(); // Hi my name is john
bobby.shoutName(); // Hi my name is bobby!


john.name = "johnny";


var Friend = function(name,instrument){
    Friend.super_.call(this, name);
    this.instrument = instrument;
}
inherits(Friend, Person);


Friend.prototype.getInstrument = function(){
    console.log(this.instrument);
}


var julia = new Friend("julia",'trombone');

julia.sayName();
julia.getInstrument();

//实现继承的方法
var human = {
    species : "human",//复制函数
    create : function(values){
        var instnce = Object.create(this);
        Object.keys(values).forEach(function(key){
            instnce[key] = values[key];
        })
        return instnce;
    },
    saySpecies : function(){
        console.log(this.species);
    },
    sayName : function(){
        console.log(this.name)
    }
};

/*var musician = Object.create(human);*/

var musician = human.create({
    species : "musician",
    playInstrument : function(){
        console.log("plays " + this.instrument);
    }
})
var will = musician.create({
    name : "Will",
    instrument : "drums"
});

will.playInstrument();
will.sayName();

转载于:https://www.cnblogs.com/caijw/p/5469357.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值