`

javascript的三种继承方式

 
阅读更多

javascript中有三种继承方式:
    构造继承:
        通过 this 指针的方式,将其它类型的属性继承到当前的类型中。
       
        原理:
            通过执行其它类型的构造方法,将当前对象的指针 this 传入,那么其它类型this.xx 指定
        的属性和方法就会被重定向到当前传入的对象的指针 this 上。
       
        弊端:
            只能继承 动态属性 ,也就是由 this 指定的方法和属性。
       

function println(string)
        {
            document.write(string + "</BR>");
        }
       
        function Father()
        {
            this.name = "father";
        }

        Father.prototype.info = "teacher";

        function Son()
        {
            // 继承 Father 的动态属性
            this.base = Father; // 引用 Father 构造方法
            this.base.call(this, arguments); // 调用 Father 的构造方法,将当前对象的指针传入
            // arguments 是方法的其它参数 ,可以省略
            // 在 Father 的构造方法执行后,name属性的指针变为当前Son对象的指针,所以
            // son对象也具有了 name 属性的值。
           
            this.age = 20;
        }

        var son = new Son();
        println(son.name); // father     父类的指针被传入的参数替换为当前子类的指针
        println(son.info); // undefined  父类的原型属性指针并没有指向子类

 

       
    原型继承:
        推荐的方式,也是最常用的方式。
        通过指定 prototype 原型为一个对象,来继承该对象所拥有的共有属性和方法。
        原型继承是最常用的继承方法,其代码结构清晰,继承范围广。
        能够继承指定对象的 动态属性 和 静态属性。
       

 function println(string)
        {
            document.write(string + "</BR>");
        }
               
        function Father()
        {
            this.name = "father";
        }

        Father.prototype.info = "teacher";

        function Son()
        {
            this.age = 20;
        }

        Son.prototype = new Father();

        var son = new Son();
        println(son.name);  // father     父类的属性(动态属性)
        println(son.info);  // teacher    父类的原型属性(静态属性)
        println(son.age);   // 20         子类的属性

 


    实例继承:
        在构造中初始化一个类型的实例,通过该实例调用其类型的方法。
       

function println(string)
        {
            document.write(string + "</BR>");
        }
       
        function Father()
        {
            this.name = "father";
        }

        Father.prototype.info = "teacher";

        function Son()
        {
            this.base = new Father();    // 父类的实例
           
            this.name = this.base.name;    // 通过父类的实例访问父类的属性
            this.age = 20;
            this.info = this.base.info;    // 通过父类的实例访问父类的属性
        }


        var son = new Son();
        println(son.name);  // 父类的属性(动态属性)
        println(son.info);  // 父类的原型属性(静态属性)
        println(son.age);   // 子类的属性

 

分享到:
评论

相关推荐

    JavaScript学习之三 — JavaScript实现继承的7种方式

    本篇文章将深入探讨JavaScript实现继承的七种常见方式,帮助你更好地理解和运用这一概念。 1. 原型链继承(Prototype Chain Inheritance) 原型链是JavaScript实现继承的基础。每个函数都有一个`prototype`属性,这...

    JavaScript五种继承方式

    JavaScript继承第1种方式:对象冒充;第2种方式:call方法;第3种方式:apply方法;第4种方式:原型链方式;第5种方式:混合方式(推荐)

    javascript 五种继承

    javascript 五种继承简介。

    JavaScript实现继承的几种方式

    本篇文章将深入探讨JavaScript中实现继承的几种常见方式。 1. 原型链继承 JavaScript的原型(prototype)机制是实现继承的基础。每个函数都有一个prototype属性,这个属性指向一个对象,这个对象的属性和方法可以被...

    【JavaScript的9种继承实现方式归纳】js实现继承的几种方式.pdf

    JavaScript 的 9 种继承实现方式归纳 JavaScript 中的继承方式是基于原型的,与基于类的编程语言,如 C++ 和 Java,截然不同。JavaScript 的灵活性使得其实现继承的方式非常多样化。本文将介绍 JavaScript 中的 9 ...

    学习javascript面向对象 javascript实现继承的方式

    本文将详细介绍六种实现JavaScript继承的方法。 1. 原型链继承 原型链继承是通过改变子类型的原型对象来实现继承的。子类型构造函数的原型被替换为超类型构造函数的一个实例,这样子类型就可以继承超类型的所有属性...

    JavaScript继承

    此外,JavaScript的灵活性允许开发者选择基于类的继承方式,或者利用原型继承的微妙之处,实现更高效的设计。 4.1 为什么需要继承 继承的主要目的是代码复用和降低耦合度。通过继承,可以在已有类的基础上扩展功能...

    JavaScript中实现继承的八种方式

    详细介绍了JavaScript中继承的实现方式以及其优缺点分析。

    javascript 原生态js类继承实现的方式

    我们还知道,面向对象编程有三个重要的概念 - 封装、继承和多态。 但是在JavaScript的世界中,所有的这一切特性似乎都不存在。 因为JavaScript本身不是面向对象的语言,而是基于对象的语言。

    javascript控件开发之继承关系

    JavaScript是一种广泛应用于网页和网络应用的脚本语言,尤其在前端开发中占据核心地位。控件开发是JavaScript应用中的重要部分,它涉及到UI组件的创建和功能实现。在这个主题中,“javascript控件开发之继承关系”...

    JavaScript面向对象继承详解

    另外,`Object.create`方法可以用来创建一个新对象,其`__proto__`指向指定的对象,是实现继承的一种便捷方式。`Object.setPrototypeOf`则用于设置一个对象的原型。 总的来说,JavaScript的面向对象继承机制灵活而...

    Javascript中的几种继承方式对比分析_.docx

    Javascript中的几种继承方式对比分析_.docx

    【JavaScript源代码】JavaScript继承的三种方法实例.docx

    ### JavaScript继承的三种方法实例详解 #### 一、概述 在JavaScript中,虽然原生语言层面没有提供传统意义上的“类”这一概念,但它通过构造函数和原型链等机制实现了类的功能,尤其是继承这一核心概念。继承是...

    JavaScript继承机制研究.pdf

    JavaScript继承机制的实现方式多样化,每种继承机制都有其优缺点。通过深入理解JavaScript继承机制,可以更好地理解JavaScript面向对象编程机制,并提高开发效率。本文对JavaScript继承机制的研究将有助于读者更好地...

    javascript的prototype继承

    JavaScript的原型继承是其...总的来说,JavaScript的原型继承是一种灵活但需要谨慎使用的机制。理解其工作原理和潜在问题对于编写高性能和可维护的代码至关重要。在实际开发中,可以根据具体需求选择适合的继承策略。

    JavaScript中的类继承

    JavaScript中的类继承是一种模拟传统面向对象编程中类概念的方式,因为JavaScript本身是一种基于原型的面向对象语言。在JavaScript中,对象可以直接从其他对象继承属性和方法,而不是通过类的实例化。这种继承机制...

    js javascript zInherit 对象 继承

    `zInherit`是JavaScript中一种常见的对象继承实现方式。 在JavaScript中,有多种实现继承的方法,包括原型链继承、构造函数继承、组合继承、寄生继承、原型式继承、共享原型等。`zInherit`是其中的一种自定义实现,...

    javascript的几种继承方法介绍_.docx

    本文将详细介绍JavaScript中的三种主要继承方法:原型链继承、构造函数继承以及组合继承。 1. **原型链继承**: - 概念:每个JavaScript函数都有一个`prototype`属性,这个属性是一个对象,当创建一个新对象时,这...

    深入探索JavaScript的原型继承:机制、实现与最佳实践

    本文将深入探讨JavaScript原型继承的工作原理、实现方式以及在现代Web开发中的应用。 JavaScript的原型继承是一种强大且灵活的机制,它允许对象之间共享功能和行为。通过深入理解原型继承的工作原理和实现方式,...

    js实现的七种继承方式.md

    使用js实现继承的七种方式,详细讲解了js中的原型链继承,构造函数继承,组合继承(经典继承),原型式继承,寄生式继承,寄生组合式继承,以及ES6中的继承,描述原理以及实现和要点概述等。

Global site tag (gtag.js) - Google Analytics