父类:
function F (name) {
// 属性
this.name = name || 'F';
// 实例方法
this.sleep = function(){
console.log(this.name + '正在睡觉!');
}
}
// 原型方法
F.prototype.eat = function(food) {
console.log(this.name + '正在吃:' + food);
};
1,将父类的实力给子类的原型
function S(){
}
S.prototype = new F();
S.prototype.name = 'cat';
// Test Code
var cat = new S();
console.log(cat.name);
如图:
2.构造函数继承
使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类
function S(name){
F.call(this);
this.name = name || 'Tom';
}
// Test Code
var cat = new S();
console.log(cat.name);
3、组合继承
function S(name){
F.call(this);
this.name = name || 'Tom';
}
S.prototype = new F();
S.prototype.constructor = S;
// Test Code
var cat = new S();
console.log(cat.name);
4、寄生组合继承
function S(name){
F.call(this);
this.name = name || 'Tom';
}
(function(){
// 创建一个没有实例方法的类
var Super = function(){};
Super.prototype = F.prototype;
//将实例作为子类的原型
S.prototype = new Super();
})();
// Test Code
var cat = new S();
console.log(cat.name);
如图: