js继承模式

组合继承是js常用的继承模式,指的是将原型链和借用构造函数的技术结合在一起。其中的思想是使用原型链实现原型属性和方法的继承,

而通过借用构造函数实现对属性的继承。

例子:

<script>
        function SuperType(name){
            this.name = name;
            this.colors = ["red","blue"];
        }
        SuperType.prototype.sayName = function(){
            alert(this.name);
        }
        function SubType(name,age){
            //继承属性
            SuperType.call(this,name);
            this.age = age;
        }
        //继承方法
        SubType.prototype = new SuperType();
        SubType.prototype.constructor = SubType;
        //添加方法
        SubType.prototype.sayAge = function(){
            alert(this.age);
        }
        var instance1 = new SubType("jie",23);
        instance1.colors.push("green");
        alert(instance1.colors);
        instance1.sayName();
        instance1.sayAge();

        var instance2 = new SubType("fei",23);
        alert(instance2.colors);
        instance2.sayName();
        instance2.sayAge();

    </script>
时间: 2024-12-20 21:59:55

js继承模式的相关文章

js继承模式、命名空间、对象枚举

继承模式 继承发展史 1.传统形式--原型链 过多的继承了没用的属性 2.借用构造函数 不能继承借用构造函数的原型 每次构造函数要多走一个函数 3.共享原型 不能添加自己原型的自定义属性,会把共享原型的对象的原型的属性也更改. 4.圣杯模式 //1.原型链 Grand.prototype.lastName = "li"; function Grand(){ } var grand = new Grand(); Father.prototype = grand; function Fat

JS继承六大模式

1.原型链 function SuperType(){this.property = true;} SuperType.prototype.getSuperValue = function(){return this.property;};function SubType(){this.subproperty = false;}//继承了SuperTypeSubType.prototype = new SuperType();SubType.prototype.getSubValue = fun

web前端开发必懂之一:JS继承和继承基础总结

首先,推荐一篇博客豪情的博客JS提高篇: http://www.cnblogs.com/jikey/p/3604459.html ,里面的链接全是精华, 一般人我不告诉他; 我们会先从JS的基本的设计模式开始,由浅入深: 工厂模式:因为使用用一个接口创建很多对象会产生大量的重复代码,为了解决这个问题,人们就开始使用工厂模式: <!DOCTYPE html> <html> <head> <title></title> <meta charse

js继承的概念

js里常用的如下两种继承方式: 原型链继承(对象间的继承) 类式继承(构造函数间的继承) 由于js不像java那样是真正面向对象的语言,js是基于对象的,它没有类的概念.所以,要想实现继承,可以用js的原型prototype机制或者用apply和call方法去实现 在面向对象的语言中,我们使用类来创建一个自定义对象.然而js中所有事物都是对象,那么用什么办法来创建自定义对象呢?这就需要用到js的原型: 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(protot

JS继承——原型的应用

前面我们知道JS是基于对象编程的一种脚本语言,在JS本着一切皆对象的原则,对象之间也涉及到了继承,不过这里的继承与我们以往学习过的继承有所不同,它运用的是对象的原型,来构造一个原型链来实现对超类对象的继承. 1.如何实现对象继承 function Box() { //Box 构造<span style="font-family:Arial;font-size:18px;">,超类对象</span> this.name = 'Lee'; } Desk.protot

JS继承 -- 寄生式继承 &amp; 寄生组合式继承

5.寄生式继承 与寄生构造函数和工厂模式类似,创建一个仅用于封装继承过程的函数,该函数在内部以某种方式来增强对象,最后返回对象. function createAnother(original){ var clone = Object.create(original); //通过调用函数创建一个新对象 clone.sayHi = function(){ //以某种方式来增强这个对象 alert("Hi"); }; return clone; //返回这个对象 } var person

3. 闭包_对象组合继承模式_事件轮询机制

1.谈谈闭包? (产生条件.是什么.在哪里.作用.生命周期.缺点) 产生闭包的三个条件: 函数嵌套 内部函数引用外部函数的局部变量 执行外部函数 包含被引用的局部变量的一个"对象",  通过 chrome 开发者工具可以调试查看到,就是 closure,它存在嵌套的内部函数中 作用: 延长了局部变量的存活时间, 让函数外部可以操作(读写)到函数内部的数据(变量/函数) 闭包的生命周期: 产生 :  在嵌套内部函数定义执行完时就产生了(不是在调用) 死亡 :  在嵌套的内部函数成为垃圾对

继承模式,命名空间,对象枚举

(一) 继承模式 传统形式(原型链) (1) 缺点:过多的继承了没用的属性 (2) 代码展示 //缺点:过多的继承了没用的属性 Grand.prototype.lastName = '张'; function Grand(){ this.name = '国庆'; } var grand = new Grand(); Father.prototype = grand; function Father(){ this.name = '改革'; } var father = new Father();

js继承的常用方式

写在前面的话:这篇博客不适合对面向对象一无所知的人,如果你连_proto_.prototype...都不是很了解的话,建议还是先去了解一下JavaScript面向对象的基础知识,毕竟胖子不是一口吃成的. 我们都知道面向对象语言的三大特征:继承.封装.多态,但JavaScript不是真正的面向对象,它只是基于面向对象,所以会有自己独特的地方.这里就说说JavaScript的继承是如何实现的. 学习过Java和c++的都知道,它们的继承通过类实现,但JavaScript没有类这个概念,那它通过什么机