1、原型链继承
function superType(name){
this.name= 'milk';
}
super.prototype.sayName=function(){
console.log(this.name);
}
function subType (age){
this.age= 20;
}
subType.prototype=new superType();// 将原型对象等于另一个类型的实例
subType.prototype.getAge=function(){console.log(this.age)}
var instance = new subType();
// 缺点:由于原型链共享的本质所引起的:对于 引用类型的数据共享问题;引用类型 数据会被所有实例共享;并且在创建子类型实例时,不能向超类型的构造函数中传递参数(应该说是 没有办法在不影响所有对象实例的情况下,给超类型的构造函数传参) 2、借用构造函数 function superType(name){
this.name=name;
} fucntion subType(){
superType.call( this ,'milk');
} var instance= new subType(); // 缺点:方法都在构造函数中定义,因此无法进行函数复用;并且超类型原型中定义的方法对子类型而言也是不可见的; 3、组合继承: // 思想:通过借用构造函数来 实现实例属性的继承;使用 原型链实现原型属性和方法的继承 function superType(name){
thism.name=name;
}
superType.prototype.sayName=function(){
console.log(this.name);
} fucntion subType(name,age){
superType.call(this,name);
this.age=age;
} subType.prototype= new superType();
subType.prototype.constructor= subType;
subType.prototype.sayAge=function(){
console.log(this.age);
} var instance = new subType('milk',20); // 缺点 :效率较低,需要调用两次超类型构造函数 4、原型式继承 不必创建自定义类型,只需借助已有对象创建新对象即可;
function object(o){
function F(){};
F.prototype = o;
return new F();
}
ES5 新增了一个类似的函数: Object.create(obj,{});
第一个参数:用作新对象(new F() )原型的对象;
第二个参数:为新对象定义额外属性的对象;
// 应注意:包含引用类型值得属性始终都会共享相应的值; 5、寄生式继承
// 基于已有对象创建一个新对象,增强新对象能力,并将新对象返回; function creatAnther(original){
var clone= object(original);
clone.saySN=function(){
//do somethings
};
return clone;
} 6、寄生组合式继承
// 由于组合继承 会调用两次 超类型的构造函数,所以 采用 寄生组合式继承从而节省 第一次调用;
// 思想:借用构造函数来继承属性,通过原型链的混成形式来继承方法;
本质上:使用 寄生式继承来继承超类型原型,然后再将结果指定给子类型的原型; 用::
var prototype = object(superType.prototype);//创建超类型原型的副本;//相当于超类型的实例
prototype.constructor= subtype;// 弥补重写原型而丢失的constructor属性
subtype.prototype= prototype;// 将新创建的 对象复制给子类型的原型
替换::
subType.prototype= new superType();
subType.prototype.constructor= subType;

JavaScript 继承方式的实现的更多相关文章

  1. JavaScript继承方式详解

    原文链接 : http://segmentfault.com/a/1190000002440502 js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继 ...

  2. JavaScript继承方式详解[转]

    js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现 ...

  3. JavaScript 继承方式详解

    js继承的概念 js里常用的如下两种继承方式: 原型链继承(对象间的继承)类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继 ...

  4. JavaScript继承方式

    我的上一篇随笔中写了有关原型继承的,下面介绍几种更加有用的. 借用构造函数 在解决原型中关于引用类型值所带来的问题,开发人员开始使用一种叫做借用构造函数. 基本思想: 在子类型构造函数的内部调用超类型 ...

  5. Javascript的四种继承方式

    在Javascript中,所有开发者定义的类都可以作为基类,但出于安全性考虑,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击. 选定基类后,就可 ...

  6. JavaScript之四种继承方式讲解

    在Javascript中,所有开发者定义的类都可以作为基类,但出于安全性考虑,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击. 选定基类后,就可 ...

  7. 总结javascript继承的两种方式的N中写法

    最近翻看博客园,总结了一下javascript的继承方式:prototype和copy继承方式. 一.prototype方式 当一个函数被创建时,Function构造函数产生的函数会隐式的被赋予一个p ...

  8. JavaScript中的几种继承方式对比

    转自:http://blog.csdn.net/kkkkkxiaofei/article/details/46474069 从’严格’意义上说,JavaScript并不是一门真正的面向对象语言.这种说 ...

  9. JavaScript各种继承方式和优缺点

    好久没写博客啦,嘻嘻,这个月是2017年的最后一个月啦,大家应该都开始忙着写年终总结了吧,嘻嘻,小颖今天给大家分享下Javascript中的几种继承方式以及他们的优缺点. 1.借助构造函数实现继承 原 ...

随机推荐

  1. ios中block中的探究

    http://blog.csdn.net/jasonblog/article/details/7756763

  2. Hibernate问题之'hibernate.dialect' not set

    继前文:Hibernate4中buildSessionFactory方法废弃问题.后 继续有问题.本来之前好好的项目,用了这种新的方法后发现问题. 出现  Connection cannot be n ...

  3. PHP-xml-1

    SimpleXML 解析xml 假设xml没有声明encoding默认使用utf-8进行解码.终于得到的数据编码为utf-8格式. 我猜想它内部实现了iconv(encoding='utf-8', ' ...

  4. 【递推+矩阵快速幂】【HDU2604】【Queuing】

    Queuing Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  5. asp.net mvc 上传图片流存服务器

    foreach (var file in Request.Files) { ]); using (FileStream fs = new FileStream(pathSrc, FileMode.Cr ...

  6. Java SE 8 for the Really Impatient读书笔记——Java 8 Lambda表达式

    1. lambda表达式的语法 lambda表达式是一种没有名字的函数,它拥有函数体和参数. lambda表达式的语法十分简单:参数->主体.通过->来分离参数和主体. 1.1 参数 la ...

  7. zookeeper_00:zookeeper注意事项

    需要将应用数据和协同数据独立开. 比如:网络邮箱服务的用户对自己邮箱中的内容感兴趣,但是并不关心由哪台服务器来处理特定邮箱的请求.在这个例子中,邮箱内容就是应用数据,而从邮箱到某一台邮箱服务器之间的映 ...

  8. zoj 1067

    输入一组RGB颜色列表,每行一个颜色,是三个从0~255的整数 前16行是目标颜色组,-1 -1 -1表示结束   16组颜色以后接下来的几行是需要判断的,看它和哪个颜色的距离D最小,找出这个对应的颜 ...

  9. android 后台运行

    改写返回键事件监听,使得back键功能类似home键,让Acitivty退至后台时不被系统销毁,代码如下: public boolean onKeyDown(int keyCode, KeyEvent ...

  10. "Classifying plankton with deep neural networks" notes

    cross entropy loss is not quite the same as optimizing classification accuracy. Althougth the two ar ...