js面向对象之组合继承

首先先上一段代码

function SuperType(name) {
    //父函数的自定义属性
    this.name = name;
    this.colors = ["red","orange","black"];
};

SuperType.prototype.sayName = function() {
     //父函数原型中定义的方法
    console.log(this.name);
};

//定义子函数
function SubType (name,age) {
    //子函数继承父函数的属性
    //借用构造函数实现对实例属性的继承
    SuperType.call(this,name);    
    //子函数定义自己的属性
    this.age = age;
}

//子函数继承父函数的方法
//通过原型链对原型属性和方法的继承
SubType.prototype = Object.create(SuperType.prototype);
    //下面注释的这种写法子类会具有父类实例的方法,不推荐
    //SubType.prototype = new SuperType();
SubType.prototype.constructor =SubType;

//自定义子函数的方法
SubType.prototype.sayAge = function() {
    console.log(this.age);
}

//测试
var instance1 = new SubType("LLL","24");
instance1.colors.push("pink");
console.log(instance1.colors);//"red,orange,black,pink"
instance1.sayName;//"LLL"
instance1.sayAge;//"24"

//测试2
var instance2 = new SubType("XXX","25");
console.log(instance2.colors);//"red,orange,black"
instance2.sayName;//"XXX"
instance2.sayAge;//"25"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,288评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,939评论 2 59
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,880评论 0 27
  • 古有“一寸光阴一寸金,寸金难买寸光阴”之说;今有“时间就是金钱,时间就是生命”的教诲。这些话铁骨铮铮,掷地有声,压...
    王家老四1阅读 435评论 0 1
  • 五月 不懂带伞 文/高保民 一地槐花,雪的样子 落在那里,占了 我的脚应该停留的地方 风来,堆起记忆 雨也来了 ...
    绿水流长阅读 326评论 0 6