js中继承二

1,将优点为我所用——组合继承
//组合式继承
//声明父类
function SuperClass (name) {
//值类型共有属性
this.name = name;
//引用类型共有属性
this.books = ["html", "css", "JavaScript"];
}
//父类原型共有方法
SuperClass.prototype.getName = function() {
console.log(this.name);
};
//声明子类
function SubClass = function (name, time) {
//构造函数式继承父类name属性
SuperClass.call(this,name);
//子类中新增共有属性
this.time = time;
}
//类式继承,子类原型继承父类
SubClass.prototype = new SuperClass();
//子类原型方法
SubClass.prototype.getTime = function () {
console.log(this.time);
}
组合式继承,在使用构造函数继承时执行了一遍父类构造函数,而在实现子类原型的类式继承时又调用了一遍父类构造函数。因此父类构造函数调用了两次,所以不是最完美的构造方法。

2,洁净的继承者——原型式继承
借助原型prototype可以根据已有的对象创建一个新的对象,同时不必创建新的自定义对象类型。实现代码如下:
//原型式继承
function inheritObject (o) {
//声明一个过度函数对象
function F () {
//过度对象的原型继承父类对象
F.prototype = o;
//返回过度对象的一个实例,该实例的原型继承了父对象
return new F();
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容