JavaScript面向对象编程(9)高速构建继承关系之整合原型链
前面我们铺垫了非常多细节。是为了让大家更加明晰prototype的使用细节;
如今能够将前面的知识整合起来,写一个函数用于高速构建基于原型链的继承关系了:
function extend(Child, Parent) {
	var F = function(){};
	F.prototype = Parent.prototype;
	Child.prototype = new F();
	Child.prototype.constructor = Child;
	Child.uber = Parent.prototype;
}
使用起来也特别简单:
function Shape(){}
// augment prototype
Shape.prototype.name = 'shape';
Shape.prototype.toString = function(){
	var result = [];
	if (this.constructor.uber) {
		result[result.length] = this.constructor.uber.toString();//super.toString()
	}
	result[result.length] = this.name;
	return result.join(', ');
};
function TwoDShape(){}
//先继承。再增强
extend(TwoDShape,Shape);
TwoDShape.prototype.name = '2D shape';
function Triangle(side, height) {
	this.side = side;
	this.height = height;
}
extend(Triangle,TwoDShape);
Triangle.prototype.name = 'Triangle';
//使用继承而来的toString方法
alert(new Triangle(10,5).toString());
JavaScript面向对象编程(9)高速构建继承关系之整合原型链的更多相关文章
- (二)Javascript面向对象编程:构造函数的继承
		Javascript面向对象编程:构造函数的继承 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承 ... 
- javascript 面向对象编程(工厂模式、构造函数模式、原型模式)
		javascript 面向对象编程(工厂模式.构造函数模式.原型模式) CreateTime--2018年3月29日17:09:38 Author:Marydon 一.工厂模式 /** * 工厂模 ... 
- JavaScript面向对象编程(10)高速构建继承关系之对象拷贝
		前面的样例我们是通过构造器创建对象.而且希望该对象继承来自另外一个构造器的对象 我们也能够直接面向一个对象来达成继承的目的.使用下属步骤: 1.拷贝一个对象 2.给新对象加入属性 /** * 通过拷贝 ... 
- Javascript面向对象编程:构造函数的继承
		今天要介绍的是,对象之间的"继承"的五种方法. 比如,现在有一个"动物"对象的构造函数. function Animal(){ this.species = & ... 
- JavaScript面向对象编程(一)原型与继承
		原型(prototype) JavaScript是通过原型(prototype)进行对象之间的继承.当一个对象A继承自另外一个对象B后,A就拥有了B中定义的属性,而B就成为了A的原型.JavaScri ... 
- (三)Javascript面向对象编程:非构造函数的继承
		Javascript面向对象编程:非构造函数的继承 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现"继承". 今天是最后一个部分,介绍不使 ... 
- Javascript面向对象编程(三):非构造函数的继承(对象的深拷贝与浅拷贝)
		Javascript面向对象编程(三):非构造函数的继承 作者: 阮一峰 日期: 2010年5月24日 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现&quo ... 
- Javascript面向对象编程(二):构造函数的继承 作者:yuan一峰
		Javascript面向对象编程(二):构造函数的继承 作者: 阮一峰 日期: 2010年5月23日 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生 ... 
- JavaScript 面向对象编程(三):非构造函数对象的继承
		JavaScript 面向对象编程(三):非构造函数对象的继承 一.什么是"非构造函数"的继承? 比如,现在有一个对象,叫做"中国人". var Chinese ... 
随机推荐
- jQuery选择器(属性过滤选择器)第六节
			<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ... 
- C 程序实现密码隐秘输入 linux系统可执行
			读写用户输入,屏幕不回显 char *getpass( const char *prompt); getpass用于从键盘读取用户输入,但屏幕不回显. 参数prompt为屏幕提示字符. 函数返回值为用 ... 
- PHPMailer < 5.2.21 - Local File Disclosure(CVE-2017-5223)
			CVE-2017-5223 :PHPMailer < 5.2.21 - Local File Disclosure 本文主要介绍一下PHPMailer < 5.2.21 - Local F ... 
- ueditor插入百度音乐无法播放-403 问题
			简单记录一下,其实403是因为百度音乐设置了禁止外部连接引用,因此 几乎所有的百度音乐播放都会提示403. 注意:预览页面(dialog/music/music.html)和实际插入页面(uedito ... 
- JavaScript正则表达式知识点
			通过学习imooc课程<JavaScript正则表达式>http://www.imooc.com/video/12539,对视频教学内容做一个知识整理. 一个正则表达式在线工具:http: ... 
- Linux系列教程(十九)——Linux文件系统管理之手工分区
			上篇博客我们首先介绍了硬盘为什么要分区,以及Linux系统的几种分区类型,然后介绍了Linux系统几个常用的文件系统命令,最后讲解了挂载命令,并通过实例演示了如何挂载光盘和U盘. 本篇博客我们将介绍l ... 
- RabbitMQ之路由
			为了实现一个新功能:只订阅消息的一个子集,例如只需要把严重的错误日志信息写入日志文件(存储到磁盘上),但同时仍然把所有的日志信息输出到控制台中. 绑定(Bindings) 创建绑定 channel.q ... 
- python相关资料
			http://blog.jobbole.com/59535/ http://www.nryoung.org/blog/2013/2/28/python-threading/ http://blog.j ... 
- 【O】VSS 2005上传PDF文件之后,打开提示文件损坏或者内容为空
			问题: VSS 2005上传PDF文件之后,打开提示文件损坏或者内容为空: 解决方式: 在vss的客户端的tools-option中,file type选项卡里,在binary file文本框中,加入 ... 
- IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”
			Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ... 
