js原生继承几种方式
js原生继承
js本身并没有继承和类的概念,本质上是通过原型链(prototype)的形式实现的。
1.先写两个构造函数Parent和Child,用于将Child继承Parent
function Parent() {
this.animals = 'animals';
this.show = function() {
console.log(this.animals);
}
}
Parent.prototype.pro = 'pro';
function Child() {
this.dog = 'dog';
}
2.prototype继承
// 这样直接将Parent.prototype赋给Child.prototype的继承方式不可取,因为在改变Child.prototype里的属性会同时改变Parent.prototype
Child.prototype = Parent.prototype; // 不能访问构造函数属性,只能访问原型
// Object.create(Parent.prototype)构造的对象是一个空对象且它的原型指向Parent.prototype,所以这里的Parent.prototype是空对象,链接到了Parent.prototype,并不会影响到Parent.prototype
Child.prototype = Object.create(Parent.prototype); // 不能访问构造函数属性,只能访问原型
// 这种继承方式是将实例化后的Parent对象赋给Child的prototype,既可以访问Parent构造函数里边的属性,也可以访问原型属性
Child.prototype = new Parent();
// 以上任一操作完成后这一步必须操作,是将Child的构造函数指向自身,否则在执行完继承之后,实例化的对象构造函数是Parent
Child.prototype.constructor = Child;
3.call,apply构造函数继承
// 需要将Child改写如下,apply类似,但缺陷就是访问不到Parent.prototype的属性了
function Child() {
Parent.call(this);
this.dog = 'dog';
}
综上,可以根据自己的实际需求去选择合适的继承方式。
js原生继承几种方式的更多相关文章
- 基础3:js实现继承的多种方式
js实现继承的多种方式 1. 原型链继承 function Parent() { this.name = 'xwk' } Parent.prototype.getName = function() { ...
- javascript实现继承3种方式: 原型继承、借用构造函数继承、组合继承,模拟extends方法继承
javascript中实现继承的三种方式:原型继承.借用构造函数继承.混合继承: /* js当中的继承 js中 构造函数 原型对象 实力对象的关系: 1 构造函数.prototype = 原型对象 2 ...
- 第184天:js创建对象的几种方式总结
面向对象编程(OOP)的特点: 抽象:抓住核心问题 封装:只能通过对象来访问方法 继承:从已有的对象下继承出新的对象 多态:多对象的不同形态 一.创建对象的几种方式 javascript 创建对象简单 ...
- js 函数定义三种方式
<p>Js 函数定义的三种方式:</p> <br> <p>方式一:function</p> <script type="te ...
- 使用Webpack加速Vue.js应用的4种方式
Webpack是开发Vue.js单页应用程序的重要工具. 通过管理复杂的构建步骤,你可以更轻松地开发工作流程,并优化应用程序的大小和性能. 其中介绍下面四种方式: 单个文件组件 优化Vue构建 浏览器 ...
- js创建对象的三种方式和js工厂模式创建对象
文章地址: https://www.cnblogs.com/sandraryan/ 创建对象 创建对象的三种方式 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象 1. 调用系统的构造函数 ...
- js创建对象的几种方式
/** * 顺便重温一下对象的创建方式 * 代码简单说明问题就好 * 概念性的东西这里就不提了,只加上自己简单理解 */ /** * 工厂模式,就是将手动的创建细节封装在一个方法里, * return ...
- js创建对象的三种方式
<script> //创建对象的三种方式 // 1.利用对象字面量(传说中的大括号)创建对象 var obj1 = { uname: 'ash', age: 18, sex: " ...
- JS对象转URL参数(原生JS和jQuery两种方式)
转自:点击打开链接 现在的js框架将ajax请求封装得非常简单,例如下面: $.ajax({ type: "POST", url: "some.php", da ...
随机推荐
- 错觉-Info:视错觉与UI元素间的可能
ylbtech-错觉-Info:视错觉与UI元素间的可能 1.返回顶部 1. 视觉原理在当下红火的机械视觉中是必不可少的,那在我们日常工作的UI产品设计中又有什么可能性的呢?今天,我从“视错觉”这个角 ...
- 【django后端分离】Django Rest Framework之一般配置(简单剖析)
1:常设状态码 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent). 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成 ...
- 在n个球中,任意取出m个(不放回),求共有多少种取法
要求: 在n个球中,任意取出m个(不放回),求共有多少种取法 分析: 假设3个球A,B,C,任意取出2个,可分为取出的球中含A的部分和不含A的部分.即AB,AC为一组,BC为一组. 设函数F(n,m) ...
- 制作ACK集群自定义节点镜像的正确姿势
随着云原生时代的到来,用户应用.业务上云的需求也越来越多,不同的业务场景对容器平台的需求也不尽相同,其中一个非常重要的需求就是使用自定义镜像创建ACK集群. ACK支持用户使用自定义镜像创建Kuber ...
- Python接口自动化(一)接口基础
HTTP接口熟悉 常见接口介绍 接口工具的使用 fiddler如何mock数据 常见接口基础面试 如何理解接口?前后端解耦,前端和后端数据对接桥梁 接口测试和功能测试区别在哪?接口测试是功能测试的一种 ...
- Android LRUCache简介
LRU Cache数据结构的介绍可以参考前面的http://www.cnblogs.com/XP-Lee/p/3441555.html. 本文以Android LRUCache来做一个简单的介绍.我们 ...
- Nginx 外的另一选择,轻量级开源 Web 服务器 Tengine 发布新版本
新版发布 近日,轻量级开源 Web 服务器 Tengine 发布了2.3.0版本,新增如下特性: ngx_http_proxy_connect_module,该模块让 Tengine 可以用于正向代理 ...
- 前端规范2-CSS规范
CSS规范 缩进 使用Tab缩进(相当于四个空格) 选择器与{之间必须包含空格,参1 属性名和之后的:不允许包含空格,:与属性值之间必须包含空格. 例 列表性属性值在单行时,后必须跟一个空格 ...
- python 自主控制异常:用户自定义异常
- 2013年山东省第四届ACM大学生程序设计竞赛J题:Contest Print Server
题目描述 In ACM/ICPC on-site contests ,3 students share 1 computer,so you can print your source code ...