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();
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 继承的概念:子类可以使用父类共享的属性和方法,避免重复代码提高代码复用性。 原型链:子类可以共享父类的实例对象和实...
    浅秋_6672阅读 3,056评论 0 0
  • > 此篇总结与《JavaScript设计模式》github地址 [YOU-SHOULD-KNOW-JS](http...
    Nealyang阅读 2,790评论 0 1
  • 写在前面 既然是浅谈,就不会从原理上深度分析,只是帮助我们更好地理解... 面向对象与面向过程 面向对象和面向过程...
    grain先森阅读 3,382评论 0 3
  • 2016.9.9 第6章 原型与面向对象 原型虽然是定义对象的一种很方便的方式,但它的本质依然是函数特性。 使用原...
    如201608阅读 3,938评论 0 0
  • 时光就像是洪水猛兽一样,摧毁身边很多的美好,留下心底最真实的疼痛。当青春不胫而走,很多当初被我们铭记的...
    杨可_ca9c阅读 2,701评论 0 2

友情链接更多精彩内容