博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript 组合继承 原型链继承 寄生继承
阅读量:7191 次
发布时间:2019-06-29

本文共 1951 字,大约阅读时间需要 6 分钟。

Javascript继承通常有三种方式。

第一种:组合式继承:

function SuperType(name) {        this.name = name;        this.colors = ["red", "blue", "green"];    }    SuperType.prototype.sayName = function() {        console.log(this.name);    };    function SubType(name, age) {        //通过call()调用SuperType的构造函数,继承SuperType属性        SuperType.call(this, name);                 //第二次调用      SuperType()        this.age = age;    }    SubType.prototype = new SuperType();  //第一次调用    SubType.prototype.sayAge = function() {        console.log(this.age);    };    var instancel = new SubType("Nicholas", 12);        SuperType()

该继承通过构造函数继承原型链的方法和父类的属性,但该方法会有两次调用父类,第一次是在继承原型链,第二次在继承属性。

 

 

第二种:原型链继承

//原型式继承实例代码:    function createObj(o) {
//对传入的对象执行了一次浅复制 function F() {} F.prototype = o; return new F(); } var person = { name: "Tom", friends: ["one", "two", "van"] }; var huPs = createObj(person); huPs.name = "GRE"; huPs.friends.push("Rob"); var yePs = createObj(person); yePs.name = "Lin"; yePs.friends.push("Sari"); console.log(person.friends);//"one,two,van,Rob,Sari"

这个没什么,Js的原型继承特性。

 

 

第三种:寄生式继承

在第一种的方法上,我们在第一次调用父类,也就是继承原型的时候,实际上只需要父类的原型副本,那么取得副本,也就省去了这一次调用。

该继承技术是最常用的。

function inheritPrototype(subType, superType) {        var prototype = object(superType.prototype);    //创建对象 超类型原型副本        prototype.constructor = subType;                //增强对象 为副本增添construct属性        subType.prototype = prototype;                  //指定对象    }    function SuperType(name) {        this.name = name;        this.colors = ["red", "blue", "green"];    }    SuperType.prototype.sayName = function() {        console.log(this.name);      };    function SubType(name, age) {        SuperType.call(this, name);        this.age = age;    }    inheritPrototype(SubType, SuperType);    SubType.prototype.sayAge = function() {        console.log(this.age);    };

 该文章参考自

转载于:https://www.cnblogs.com/Darlietoothpaste/p/6682296.html

你可能感兴趣的文章
读书笔记之:More Effective C++ (2007)[+]
查看>>
CSS3学习手记(7) CSS3装换 3D转换
查看>>
fitnesse - 安装部署
查看>>
MSAA, UIA brief explanation
查看>>
Mayor's posters POJ - 2528 (离散化+线段树)
查看>>
openfalcon源码分析之hbs
查看>>
Angular文件基本结构
查看>>
悬浮广告代码
查看>>
git查看某个文件的提交历史
查看>>
新年遇到的证书签名无效问题
查看>>
微软MVP Round Table
查看>>
浅谈程序猿简历的写法,你会如何写你的简历呢。(转)
查看>>
Python笔记5----集合set
查看>>
cut---Linux下文本处理五大神器之四
查看>>
浅谈DOM数遍历
查看>>
Commons工具包的使用
查看>>
基于聚类和神经网络的图像颜色提取和评分方案
查看>>
Unity3D插件-自制小插件、简化代码便于使用(新手至高手进阶必经之路)
查看>>
银行家算法
查看>>
hsdfz -- 6.18 -- day3
查看>>