方式1:Call实现

  • Parent1.call(this);会调用Parent方法,将属性绑定到child1上
function Parent1() {this.name = "parent1";this.f = function () {console.log("parent1");};
}
function Child1() {Parent1.call(this);this.type = "child1";
}let child = new Child1();
child.f();
  • 缺点:无法继承Parent原型上的内容,因为相当于只是改变了一下this指向

方式2:原型链

function Parent2() {this.name = "parent2";this.play = [1, 2, 3];
}
function Child2() {this.type = "child2";
}
Child2.prototype = new Parent2();let child1 = new Child2();
let child2 = new Child2();child1.play.push(4);console.log(child1.play, child2.play);
  • 缺点:多个实例的原型都是指向同一个对象,容易造成污染

方式3:Call+原型链

  • 解决上一步实例属性污染的问题
  function Parent3 () {this.name = 'parent3';this.play = [1, 2, 3];}function Child3() {Parent3.call(this);this.type = 'child3';}Child3.prototype = new Parent3();//把父元素实例通过Call都绑定到自身实例上,实现隔离var s3 = new Child3();var s4 = new Child3();s3.play.push(4);console.log(s3.play, s4.play);
  • 缺点:Child3.prototype = new Parent3(); 会造成多运行一次构造函数

方式4:寄生组合继承

function Parent5() {this.name = "parent5";this.play = [1, 2, 3];
}
function Child5() {Parent5.call(this);this.type = "child5";
}
Child5.prototype = Object.create(Parent5.prototype);
//不加这个会使得child实例的constructor指向Parent5
Child5.prototype.constructor = Child5;console.log(new Child5());

js 实现继承的几种方式相关推荐

  1. (转)js实现继承的5种方式

    js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式 1.使用对象冒充实现继承(该种实 ...

  2. JavaScript(js)实现继承的几种方式

    1.原型链继承 核心:将父类的实例做为子类的原型对象 //动物类function Animal(name,sex) {this.name = name || 'Animal';this.sex = s ...

  3. JS 实现继承的 5 种方式

    文章目录 继承 原型链继承 原型链继承的优缺点 构造继承 构造继承的优缺点 复制继承 复制继承的优缺点 组合继承 组合继承的优缺点 寄生组合继承 参考 继承 继承作为面向对象语言的三大特性之一(继承. ...

  4. 面试--js实现继承的几种方式

    基于原型的继承 function father() {this.faName = 'father';this.names=['11','22']}father.prototype.getfaName ...

  5. JS 总结之原型继承的几种方式

    在之前的总结中,我们详细分析了原型<JS 总结之原型>,原型很大作用用于模拟继承,这一次,我们来聊原型继承的几种方式. function Person (age) {this.age = ...

  6. js中继承的几种用法总结(apply,call,prototype)

    本篇文章主要介绍了js中继承的几种用法总结(apply,call,prototype) 需要的朋友可以过来参考下,希望对大家有所帮助 一,js中对象继承 js中有三种继承方式 1.js原型(proto ...

  7. 继承有几种方式,分别是什么,想要实现继承可以使用哪些方法

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [继承有几种方式 ...

  8. 可以实现继承的几种方式

    继承的几种方式 说起继承,又是一个老生常谈的问题了.今天来讲讲继承的几种方法以及他们的优缺点吧. 源码地址:点击这里 一.原型链继承 原型链继承:通过原型将一个引用类型继承另一个引用类型的属性和方法. ...

  9. JS数组遍历的几种方式

    JS数组遍历的几种方式 JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代 ...

  10. Django中Model继承的三种方式

    Django中Model继承的三种方式 Django中Model的继承有三种: 1.抽象继承 2.多表继承 3.proxy model(代理model) 1.抽象继承 第一种抽象继承,创建一个通用父类 ...

最新文章

  1. 十一运夺金基础数据采集工具
  2. 【js】common.jsp的使用
  3. c++服务器开源项目,开源一个c++ lua服务器框架
  4. 关于Java中static关键字的用法以及从内存角度解析
  5. 配置数据引擎(BDE、SQL Link)的简单方法 /制做快速按钮条的方法/建立临时表的方法
  6. Neo4j 的一些使用心得
  7. 一名全栈工程师的必备工具箱
  8. 【网站模板】第01期—15套免费网站后台管理模板
  9. C语言中实现字符串的拼接
  10. 微型计算机的指令集,窥视灵魂深处 AMD新一代SIMD指令集剖析
  11. 【练习】Accessing data with MySQL
  12. rocketMQ —— 02(集群搭建、rocketmq工作原理)
  13. 基于android的共享车位app
  14. 怎样用计算机传输文件,如何在两台电脑之间传输几百G的文件?教你一招
  15. JWT、JWE、JWS 、JWK 到底是什么?该用 JWT 还是 JWS?
  16. 如何开心愉快兴趣满满的学习机器人和人工智能知识并提升思维力
  17. “天下文章一大抄”的时代已经过去
  18. python自动考勤脚本实现
  19. java大作业用jsp数据库java_JSP数据库大作业 - 不是太阳也要发光的个人页面 - OSCHINA - 中文开源技术交流社区...
  20. 【HTML】HTML网页设计---智能动物园系统网站端

热门文章

  1. JS常见的兼容性问题汇总
  2. VC MFC 发送模仿键盘消息
  3. 一个简单的吃豆子游戏
  4. 基于天天动听API开发在线音乐查询网站
  5. anvyiew java版_细说Anyview阅读器背后的故事
  6. 乐理基础-曲谱、简谱、音名、唱名、调、调号
  7. HikariCP 创建连接
  8. matlab贝塞尔函数零点,第一类贝塞尔函数零点求解matlab程序
  9. java类加载机制之类加载过程、类加载器及双亲委派模型详解
  10. 判断一个数是否为质数(素数)的4种方法