Javascript实现继承的几种方式
来源:互联网 发布:域名所有权查询 编辑:程序博客网 时间:2024/05/18 12:03
- 1.原型链实现继承:
- 核心: 将父类的实例作为子类的原型;
特点:
- 非常纯粹的继承关系,实例是子类的实例,也是父类的实例
- 父类新增原型方法/原型属性,子类都能访问到
- 简单,易于实现
缺点:
- 要想为子类新增属性和方法,必须要在
new Animal()
这样的语句之后执行,不能放到构造器中 - 无法实现多继承
- 来自原型对象的引用属性是所有实例共享的(详细请看附录代码: 示例1)
- 创建子类实例时,无法向父类构造函数传参
- 要想为子类新增属性和方法,必须要在
- 2.混入继承(拷贝继承)
特点:
- 支持多继承
缺点:
- 效率较低,内存占用高(因为要拷贝父类的属性)
- 无法获取父类不可枚举的方法(不可枚举方法,不能使用for in 访问到)
- 3.原型式继承(经典继承)
- 总结:创建一个新的对象,让新的对象可以继承自指定的对象,从而这个新的对象及可以访问到自己的属性,也可以访问到指定的对象属性;
- 现代浏览器中:Object.create()实现了原型式继承
- ES5(js语言规范的第五个版本)--Object.create()--->9以下不支持
- 4.借用构造函数实现继承
- 核心:使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类(没用到原型);
特点:
- 解决了1中,子类实例共享父类引用属性的问题
- 创建子类实例时,可以向父类传递参数
- 可以实现多继承(call多个父类对象)
缺点:
- 实例并不是父类的实例,只是子类的实例
- 只能继承父类的实例属性和方法,不能继承原型属性/方法
- 无法实现函数复用,每个子类都有父类实例函数的副本,影响性能
- 5.组合继承
- 核心:通过调用父类构造,继承父类的属性并保留传参的优点,然后通过将父类实例作为子类原型,实现函数复用
- 特点:
- 既是子类的实例,也是父类的实例
- 不存在引用属性共享问题
- 可传参
- 函数可复用
缺点:
- 调用了两次父类构造函数,生成了两份实例(子类实例将子类原型上的那份屏蔽了)
- 推荐指数:★★★★(仅仅多消耗了一点内存)
- 1.原型链实现继承:
0 0
- javascript 实现继承的几种方式
- javascript实现继承的几种方式
- javascript实现继承的几种方式
- Javascript实现继承的几种方式
- javascript实现继承的几种方式
- JavaScript实现继承的几种方式
- javascript 实现继承的几种方式
- Javascript实现继承的几种方式
- javascript的继承实现的几种方式
- JavaScript中实现继承的几种方式
- JavaScript中实现继承的几种方式
- javascript几种实现继承方式
- javascript 对象继承的几种方式
- JavaScript继承的几种方式解析
- javascript 继承的几种方式
- JavaScript继承的几种方式
- javascript的几种继承方式
- JavaScript的几种继承方式
- web项目动态生成验证码
- NGUI的渲染管理
- 奇虎360 2017春招编程题
- Goal vs Objective vs Ideal
- 数据源配置方式
- Javascript实现继承的几种方式
- D. Remainders Game(最小公倍数,最大公约数模板)
- java 服务端开发笔记
- B
- Mnist下载 Python源代码
- ES6(七) 数组的扩充
- CentOS 6.x 安装Nginx
- 使用什么技术呢
- Vue中better-scroll插件的使用