Javascript面向对象编程(二)
子承父业
该方法利用了call,apply,按照原有的方式进行复制,做一些改进,最后进行事务处理。废话不多说,直接看例子。

在这里我提一下,call和apply的异同:它们两个都可以改变this指向,而且接受的第一个参数都是this需要指向的对象它们的区别就在于传入的参数形式不同。call接受一串参数需要逐一列出来,apply接受一个参数数组。具体代码我就不赘述了。
原型链继承
把我的使用权限给你,你可以直接拿去用,减少资源浪费。

解释一下代码:先创建一个原始的对象fn1,然后给它的原型添加属性和方法。再创建一个对象fn2准备继承fn1。将fn2的原型赋值为一个指针,指向fn1。最后执行fn2.name获取继承过来的属性。
混合继承
我们先来看一个错误的例子。

运行出来的结果与我设想的不太一样。原来是Father的show方法被修改了,变的跟Son一样。可是不利用原型去继承,Son又怎么继承到Father身上的方法呢?那只有一种可能了,我们原型继承使用的方法不对!
接下来看一下正确的写法:

代码修改之处就是使用了for-in循环,遍历Father的原型依次拷贝给Son的原型,这种方式称为深拷贝。(浅拷贝以及深拷贝后续再详细写)
ES6的class继承

Javascript面向对象编程(二)的更多相关文章
- 《JavaScript面向对象编程指南(第2版)》读书笔记(二)
<JavaScript面向对象编程指南(第2版)>读书笔记(一) <JavaScript面向对象编程指南(第2版)>读书笔记(二) 目录 一.基本类型 1.1 字符串 1.2 ...
- (二)Javascript面向对象编程:构造函数的继承
Javascript面向对象编程:构造函数的继承 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承 ...
- Javascript面向对象编程(二):构造函数的继承 作者:yuan一峰
Javascript面向对象编程(二):构造函数的继承 作者: 阮一峰 日期: 2010年5月23日 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生 ...
- JavaScript 面向对象编程(二):继承
Javascript面向对象编程(二):构造函数的继承 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继 ...
- JavaScript面向对象编程(二)构造函数和类
new关键字和构造函数 在文章JavaScript面向对象编程(一)原型与继承中讨论啦JavaScript中原型的概念,并且提到了new关键字和构造函数.利用new关键字构造对象的实例代码如下: // ...
- JavaScript面向对象编程学习笔记
1 Javascript 面向对象编程 所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量.对构造函数使用new运算符,就能生成实例,并且this变量会绑定在实例 ...
- 深入理解Javascript面向对象编程
深入理解Javascript面向对象编程 阅读目录 一:理解构造函数原型(prototype)机制 二:理解原型域链的概念 三:理解原型继承机制 四:理解使用类继承(继承的更好的方案) 五:建议使用封 ...
- 【转】Javascript 面向对象编程(一):封装
原文链接:http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html Javascript ...
- Javascript 面向对象编程(一):封装 by 阮一峰
<Javascript高级程序设计(第二版)>(Professional JavaScript for Web Developers, 2nd Edition) 它们都是非常优秀的Java ...
- 转:javascript面向对象编程
作者: 阮一峰 日期: 2010年5月17日 学习Javascript,最难的地方是什么? 我觉得,Object(对象)最难.因为Javascript的Object模型很独特,和其他语言都不一样,初学 ...
随机推荐
- java学习之路重新出发
一.Java发展史: 1995年由詹姆斯高斯林带领团队开发 java问世 2004 jdk1.5版本更名jdk5.0 2010 sun公司被oracle公司收购 二.java三大体系: java ...
- MySQL_DML语言
#MySQL--DML语言##SQL组成DDL:数据库模式定义语言,关键字:create DML:数据操纵语言,关键字:insert,delete,update DCL:数据库控制语言,关键字:gra ...
- C++中const的用法
1.const修饰普通变量和指针 (1).const修饰普通变量 其写法有2种:a.const type value; b.type const value; 这两种写法本质上是一样的.其含义是: ...
- inno安装客户端,写注册表url调用客户端
[Registry] Root: HKCR; SubKey: xxx; ValueData: "xxx"; ValueType: string; Flags: CreateValu ...
- Hadoop MapReduce2.0(Yarn)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/cqboy1991/article/details/25056283 MapReduce2.0(Yar ...
- Centos7下使用yum源安装zabbix Server
系统:Centos7 zabbix版本:4.2 一.Zabbix Server端 1.安装仓库 rpm -ivh https://repo.zabbix.com/zabbix/4.2/rhel ...
- py-day4-1 python reduce函数
from functools import reduse 从模块中导入 reduce函数: 处理一个序列,然后把序列进行合并操作 #**** 问题:求1+2+3+100的和是多少? # 一,原始 ...
- 转 一个oracle11g 使用exp导出空表丢失的问题分析及解决办法
用exp无法导出空表解决方法 最早的一次使用oracle 11g导出数据发现有的表丢失了,感觉莫名其妙的,后来终于找到原因了. 找到问题以后,再看看解决方案.11GR2中有个新特性,当表无数据时,不分 ...
- Sql Server查看死锁及堵塞脚本
--每秒死锁数量 SELECT * FROM sys.dm_os_performance_counters WHERE counter_name LIKE 'Number of Deadlocksc% ...
- python文件读取操作
#IO操作 #模拟账号登录 data = [] #0=userName 1=password obj = open("login.txt","r") for l ...