JavaScript之各种继承方式和优缺点
2019独角兽企业重金招聘Python工程师标准>>>
JavaScript之各种继承方式和优缺点
- 原型链继承
function Parson(){this.name = 'hy'
}
Parson.prototype.getName = function(){console.log(this.name)
}function Child(){}Child.prototype = new Parson()var Child1 = new Parson()Child1.getName() // hy
问题:
- 引用类型的属性被所有的实例共享,修改了会影响所有实例
function Parson(){this.name = 'hy'this.age = [13,15]
}
Parson.prototype.getName = function(){console.log(this.name)
}function Child(){}Child.prototype = new Parson()var Child1 = new Child()
Child1.age.push(16)
console.log(Child1.age) // [ 13, 15, 16 ]var Child2 = new Child()
console.log(Child2.age) // [ 13, 15, 16 ]Child1.getName() // hy
Child2.getName() // hy
2. 在创建 Child 的实例时,不能向Parent传参
2.借用构造函数继承(经典继承)
function Parson(){this.names = ['hy', 'ycl']
}function Child(){Parson.call(this)
}var child1 = new Child()child1.names.push('zz')
console.log(child1.names) // [ 'hy', 'ycl', 'zz' ]var child2 = new Child()
console.log(child2.names) // [ 'hy', 'ycl' ]
优点:
- 避免了引用类型的属性被所有实例共享
- 可以在Child中向Parson传参数
function Parson(name){this.names = name
}function Child(name){Parson.call(this , name)
}var child1 = new Child('hy')console.log(child1.names) // hyvar child2 = new Child('ycl')
console.log(child2.names) // ycl
问题
- 方法都在构造函数中定义,每次创建实例都会创建一遍方法。
转载于:https://my.oschina.net/u/4052053/blog/3020425
JavaScript之各种继承方式和优缺点相关推荐
- JavaScript中的几种继承方式及优缺点,你知道多少呢?
原文连接:JavaScript中的几种继承方式及优缺点,你知道多少呢? 继承也是前端里面的重要的一个知识点,在实际工作中或者面试中也会经常的遇到,那么通过这篇文章我们详细的了解一下继承的几种方式以及各 ...
- javascript中的继承方式
javascript中的继承方式有好几种. 下面分别举例供大家参考学习: 1.function parent() { this.x=1; } function child() { var instan ...
- JavaScript中的几种继承方式及优缺点分析
众所周知,继承是面向对象编程思想中的三大特点(封装,继承,多态)之一. 所谓继承,通俗来讲就是子类自动拥有父类的属性和方法, 继承可以提高代码的复用性. 继承也是前端里面的重要的一个知识点,在实际工作 ...
- 【呆萌の研究】JavaScript常见的继承方式
最近在看<JavaScript设计模式>,然后开篇复习了JavaScript中的几种继承方式,自己似乎也没有怎么仔细探究过,目前自己没怎么碰到过应用的场景(噗),所以借这次机会好好来屡屡思 ...
- JS继承方式及其优缺点总结
1.原型链继承 - 优点:最简单的方式,将子类的原型指向父类的实例即可. - 缺点:一是引用类型的属性被所有实例共享,修改堆内存数据时会将所有实例数据都修改,但是直接创建新的存储对象就不会产生这个 ...
- Javascript七种继承方式
<!DOCTYPE html> <html><head><meta charset="utf-8"><title>< ...
- JavaScript六种继承方式的递进推演
1. 原型链继承 function Parent1() {this.name = "Parent1"this.son = [1] } // 需要继承的子类 function Chi ...
- Js理解之路:Js常见的6中继承方式
目录 一.JS 实现继承的几种方式 第一种:原型链继承 二.构造函数继承(借助call方法) 三.组合继承(原型链继承+构造函数继承) 第四种:原型式继承(借助Object.create) 第五种:寄 ...
- 探究JS常见的6种继承方式
先看以下百科对(面向对象的继承)的解释! 通过以上精炼实用的解释,我们可以了解到继承的基本作用和功能!即可以使得子类具有父类的属性和方法或者重新定义.追加属性和方法等. 广告:帮忙点击>> ...
最新文章
- centos7.2安装mysql 1
- CLOSE_WAIT 和TCP_KEEPALIVE
- 美团命名服务的挑战与演进
- 学习Linux系统的态度及技巧
- 中国为什么不发展民用计算机,为什么大多数人都错估了计算机与AI的发展?
- opencv调节图片饱和度_OpenCV调整彩色图像的饱和度和亮度
- 深入理解java虚拟机 - jvm高级特性与最佳实践(第三版)_深入理解Java虚拟机,JVM高级特性与最佳实践!...
- 机器人周志_机器人教学的意义
- 超级详细的pytest测试和allure测试报告
- 雷达(微波)感应天线设计
- 计算机键盘音乐 卡农,巴赫键盘音乐
- 确定部分分式中待定系数的留数方法
- 系统默认只有一张内置的静态壁纸,如如何修改可以内置多张静态壁纸
- CVE PoC的精选列表(三)
- 小程序点击多个指定地方都能关闭弹框
- 基于规则的中文地名识别系统的设计与实现
- App推广人员应该知道的事:一条热门微博背后的传播心理
- HTTP应知应会知识点复习手册(下)
- 【人工智能】人工智能起源以来,经过科学工作者们的大量研究与实践,向着体系化、理论化方向发展
- 电驴不显示链接不上服务器,电驴连接不上服务器是什么原因?原因及解决方法步骤...
热门文章
- DedeHttpDown下载类
- MySQL学习笔记(5)之数据定义类型
- 刚搭建的linux环境的基本优化以及优化脚本---菜鸟初写
- 移动端重构系列5——等分,居中等
- oracle client中对 TNSNAMES.ORA的研究
- 通过iTextSharp为PDF添加带有超链接的Bookmark
- web前段学习day_01:HTML(学习如何搭建页面结构和内容):文本标签、列表标签、图片标签、超链接、表格、表单表单、分区标签、实体引用
- 分享Kali Linux 2016.2第48周虚拟机
- Xamarin.Forms教程下载安装Xamarin.iOS
- 聚类时需要标准化吗_打球时意外受伤,同伴需要担责吗?