文档章节

js oop 继承

appleZ
 appleZ
发布于 2015/04/10 11:04
字数 368
阅读 25
收藏 0

1.原型链继承

    子类原型继承父类实例

    弊端:共享一个父类实例  不方便传参

2.借用构造函数继承

    使用 call apply 直接复制父类属性到子类构造函数中

    弊端:只能访问父类属性 不能访问父类原型链属性

3.组合继承(原型链继承 + 借用构造函数继承

    借用构造函数继承方法继承属性 子类原型指向父类实例用来借用原型链属性

    弊端:多次使用了相同的属性 不过也是相对可取的继承方式

4.原型继承

function object(o) {
    function F() {}
    F.prototype = o;
    return new F();
}

    直接指向对象(对象就没有了构造函数对象的限制) 不指向实例 (应该是没有父类原型链属性这一说)

    弊端:共享同一个对象 与1同样的弊端

5.寄生式继承

    直接给原型继承返回的实例添加属性进行本地属性包装

6.寄生组合继承 

    直接指向父类的原型 借用的都是原型链中的属性 

    再调用call apply 继承本地属性  比较完美的继承方式

综上:

    给出一个比较好的继承写法:

function extend(subType, superType){
	function F() {};
	F.prototype = superType.prototype;
	subType.prototype = new F();
	subType.prototype.constructor = subType;
}
function superClass(){
	this.name = "superClass";
}
superClass.prototype.test = function(){
	alert(this.name);
}
function subClass(){
	superClass.apply(this, arguments);
}
extend(subClass, superClass);
var sub = new subClass();
sub.test()


© 著作权归作者所有

共有 人打赏支持
appleZ
粉丝 1
博文 38
码字总数 9774
作品 0
深圳
私信 提问
JavaScript 私有成员

Class field declarations for JavaScript(JavaScript 类的字段声明)目前已经进入了 stage-3,其中包含一项 OOP 开发者都很关注的内容:Private fields。JavaScript 一直没有私有成员并不是...

边城__
08/13
0
0
JavaScript 的私有成员

Class field declarations for JavaScript(JavaScript 类的字段声明)目前已经进入了 stage-3,其中包含一项 OOP 开发者都很关注的内容:Private fields。JavaScript 一直没有私有成员并不是...

边城
08/13
0
0
Classing{js} 1.0.2 发布,JavaScript 的 OOP 接口

Classing{js} 1.0.2 支持创建 private 或者 protected 的构造函数。 Classing{js} 创建一个典型 OOP 的 JavaScript 接口。它不需要编译和任意的预处理过程,就可以营造出经典的面向对象的环境...

oschina
2014/05/02
499
0
用函数式编程对JavaScript进行断舍离

译者按: 当从业20的JavaScript老司机学会函数式编程时,他扔掉了90%的特性,也不用面向对象了,最后发现了真爱啊!!! 原文: How I rediscovered my love for JavaScript after throwing 90...

Fundebug
2017/09/13
0
0
Classing{js} 1.0.3 发布,JavaScript 的 OOP 接口

Classing{js} 1.0.3 发布,此版本的库 API 封装在命名空间 classing 中,避免与其他库或者会使用到的 API 的名字冲突。 Classing{js} 创建一个典型 OOP 的 JavaScript 接口。它不需要编译和任...

oschina
2014/05/26
691
2

没有更多内容

加载失败,请刷新页面

加载更多

开源 java CMS - FreeCMS2.8会员我的留言

项目地址:http://www.freeteam.cn/ 我的留言 从左侧管理菜单点击我的留言进入。在这里可以查看当前登录会员的所有留言记录。 查看留言 点击留言标题可以查看留言详细内容。 删除留言 选择留...

freeteam
5分钟前
1
0
OSChina 周五乱弹 —— 这就是不要女朋友的理由

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @狄安娜的猫 :分享丁家鑫的单曲《丁家鑫 - 克罗地亚狂想曲 - 古筝remix》 《丁家鑫 - 克罗地亚狂想曲 - 古筝remix》 手机党少年们想听歌,请...

小小编辑
36分钟前
276
11
CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
6
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
4
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部