文档章节

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
用函数式编程对JavaScript进行断舍离

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

Fundebug
2017/09/13
0
0
Stream上传插件(js设计)

1、概述 javascript是一种弱类型的语言,变量在运行的过程中可能从一种类型转变成另外一种类型,所以编码规范就非常重要了(stream.js主要参考网易的js命名规则:http://blog.jobbole.com/1...

java_speed
2013/11/29
0
18
js中的prototype和构造函数

js中没有类的感念,继承也是通过原型链来实现的对象的继承而不是类的继承 Vjeux写的这篇文章应该能帮助我们更好的理解js中原型的工作方式:http://blog.vjeux.com/2011/javascript/how-proto...

leo-H
2013/04/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

白话SpringCloud | 第十章:路由网关(Zuul)进阶:过滤器、异常处理

前言 简单介绍了关于Zuul的一些简单使用以及一些路由规则的简单说明。而对于一个统一网关而言,需要处理各种各类的请求,对不同的url进行拦截,或者对调用服务的异常进行二次处理等等。今天,...

oKong
1分钟前
0
0
详解nohup和& 区别

详解nohup和& 区别 2017年11月29日 16:57:38 King-Long 阅读数:7266 版权声明:本文为博主原创文章,欢迎转载。 https://blog.csdn.net/u011095110/article/details/78666833 nohup 一、【解...

linjin200
13分钟前
0
0
Character的static方法

基本类型char的包装类是Character,使用的比较多,大家是比较熟悉的。 我只是觉得里面有很多static方法,平时不怎么用,学习一下怎么实现的,或许日后就用到了。 static int compare(char x,...

woshixin
14分钟前
0
0
正则介绍_sed

10月17日任务 9.4/9.5 sed sed工具 匹配打印 -n 只打印匹配行,不然其他行也会打印出来 p 打印(配合-n使用) [root@centos7 tmp]# sed -n '/root/'p passwd root:x:0:0:root:/root:/bin/ba...

robertt15
14分钟前
0
0
轻松解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码

轻松解码类似eval(function(p,a,c,k,e,d){}))的JavaScript代码 2013年05月22日 15:18:05 秋实先生 阅读数:14826 这里解码百度访问统计代码构造函数为示例: 百度访问统计代码JavaScript源码:...

_纵横捭阖_
23分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部