javascript 继承实现
JavaScript高级程序设计读书笔记
这本书继承的实现列举了好几种,里面有两种是比较靠谱的。
1 组合继承
//父构造函数
function Super(name) {
this.name = name;
this.colors = ['black', 'red'];
}
Super.prototype.getName = function() {
return this.name;
} //子构造函数
function Sub(name, age) {
Super.call(this, name);
this.age = age;
}
//把Sub的原型修改为Super的实例,就能继承Super.prototype中的属性和方法了,
//这样存在的问题是:把name和colors属性也添加到Sub.prototype中了,这部分对实例是不可见的,
//因为调用new Sub()生成实例时,会把name和colors添加为实例属性
Sub.prototype = new Super();
Sub.prototype.getAge = function(){
return this.age;
}
//前面修改Sub.prototype时,导致Sub.prototype.constructor指向了Super,所以要修改回来
Sub.prototype.constructor = Sub;
var ins1 = new Sub('mengxb', 28);
2 寄生组合式继承
function Object(o) {
    function F() {};
    F.prototype = o;
    return new F();
}
function inheritPrototype(sub, super) {
    var prototype = Object(super.prototype);
    sub.prototype = prototype;
    sub.prototype.construtor = sub;
}
function Super(name) {
    this.name = name;
    this.colors = ['black', 'red'];
}
Super.prototype.getName = function() {
    return this.name;
}
function Sub(name, age) {
    Super.call(this, name);
    this.age = age;
}
inheritPrototype(Sub, Super);
Sub.prototype.getAge = function(){
    return this.age;
}
javascript 继承实现的更多相关文章
- javascript继承的三种模式
		javascript继承一般有三种模式:组合继承,原型式继承和寄生式继承: 1组合继承:javascript最为广泛的继承方式通过原型链实现对原型属性和方法的继承,通过构造函数实现对实例属性的继承,同 ... 
- javascript继承机制的设计思想(ryf)
		我一直很难理解Javascript语言的继承机制. 它没有"子类"和"父类"的概念,也没有"类"(class)和"实例" ... 
- 【读书笔记】javascript 继承
		在JavaScript中继承不像C#那么直接,C#中子类继承父类之后马上获得了父类的属性和方法,但JavaScript需要分步进行. 让Brid 继承 Animal,并扩展自己fly的方法. func ... 
- 图解JavaScript 继承
		JavaScript作为一个面向对象语言,可以实现继承是必不可少的,但是由于本身并没有类的概念(不知道这样说是否严谨,但在js中一切都类皆是对象模拟)所以在JavaScript中的继承也区别于其他的面 ... 
- JavaScript强化教程——Cocos2d-JS中JavaScript继承
		javaScript语言本身没有提供类,没有其它语言的类继承机制,它的继承是通过对象的原型实现的,但这不能满足Cocos2d-JS引擎的要求.由于Cocos2d-JS引擎是从Cocos2d-x演变而来 ... 
- [原创]JavaScript继承详解
		原文链接:http://www.cnblogs.com/sanshi/archive/2009/07/08/1519036.html 面向对象与基于对象 几乎每个开发人员都有面向对象语言(比如C++. ... 
- javascript继承(六)—实现多继承
		在上一篇javascript继承—prototype最优两种继承(空函数和循环拷贝)(3) ,介绍了js较完美继承的两种实现方案,那么下面来探讨一下js里是否有多继承,如何实现多继承.在这里可以看看j ... 
- javascript继承(五)—prototype最优两种继承(空函数和循环拷贝)
		一.利用空函数实现继承 参考了文章javascript继承—prototype属性介绍(2) 中叶小钗的评论,对这篇文章中的方案二利用一个空函数进行修改,可以解决创建子类对象时,父类实例化的过程中特权 ... 
- javascript继承(四)—prototype属性介绍
		js里每一个function都有一个prototype属性,而每一个实例都有constructor属性,并且每一个function的prototype都有一个constructor属性,这个属性会指向 ... 
- 【JavaScript】重温Javascript继承机制
		上段时间,团队内部有过好几次给力的分享,这里对西风师傅分享的继承机制稍作整理一下,适当加了些口语化的描述,留作备案. 一.讲个故事吧 澄清在先,Java和Javascript是雷锋和雷峰塔的关系.Ja ... 
随机推荐
- MergeSort(归并排序)算法Java实现
			归并排序 归并排序 (merge sort) 是一类与插入排序.交换排序.选择排序不同的另一种排序方法.归并的含义是将两个或两个以上的有序表合并成一个新的有序表.归并排序有多路归并排序.两路归并排序 ... 
- pageX/Y, offset(), position(), scrollTop(), screenX/Y, clientX/Y, pageX/Y
			event.pageX get mouse position Description: The mouse position relative to the left edge of the docu ... 
- T-SQL 的简单查询语句
			通配符: “_”: 代表匹配一个字符 “%”: 代表匹配多个字符: []:表示范围,可以包含多个数据 [^] 表示取反 “-“ 表示范围 逻辑与 and 逻辑或 or 逻辑非 not 聚会函数 : ... 
- java list倒序输出及复制list集合
			如原来有一个集合list,list里面是有数据的,现在如果把list中的集合倒序过来,加这代码 Collections.reverse(list);此代码中传入原来的list数据 有这代码后list在 ... 
- JAVA线程同步辅助类CyclicBarrier循环屏障
			CyclicBarrier是一个同步辅助类,主要作用是让一组线程互相等待,知道都到达一个公共障点,在一起走.在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrie ... 
- hihoCoder 1385 : A Simple Job(简单工作)
			hihoCoder #1385 : A Simple Job(简单工作) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 Institute ... 
- Linux文本流
			Linux文本流 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 文本流 文件用于数据的存储,相当于一个个存储数据的房子.我们 ... 
- ★Java多线程编程总结 系列 转
			下面是Java线程系列博文的一个编目: Java线程:概念与原理 Java线程:创建与启动 Java线程:线程栈模型与线程的变量 Java线程:线程状态的转换 Java线程:线程的同步与锁 Jav ... 
- 从零开始HTML(一  2016/9/19)
			就是准备跟着W3C上的教程过一遍HTML啦,边看边记录更便于理解记忆吧~ 1.属性 HTML 标签可以拥有属性.属性提供了有关 HTML 元素的更多的信息.属性总是以名称/值对的形式出现,比如:nam ... 
- 浅谈Eclipse的更新、升级和MyEclipse插件的安装方法
			用的是如下图所示的eclipse标准版演示: 先谈下eclipse下安装MyEclipse插件的过程: 第一种方法:通过MyEclipse的存档进行离线更新 1,到MyEclipse官网进入下载页面, ... 
