• 寄生组合式继承方法的实现以及原理总结


    学习js也有将近两年时间了吧,回头想想真的是犯了很多错。太急躁,太急功近利了。这不最近只能亡羊补牢了。重新好好的,一点一点的复习了js的知识点。公司天天加班,但是回来研究源生js感觉就像做按摩一样放松,这两天把面向对象的创建对像和继承学习了下。下面做个总结。希望大家批评指导啊。

    首先说到继承:我们为什么要实现继承?我个人认为1,减少代码,相同功能写一遍就好了,然后让子类继承就好了。2,方便维护,如果我要修改某个功能的实现方法,只在最高的那个父类修改了,其他类会随之修改。我们可以发现js的中的系统的一些类就是这样做的。那么我们来一块看看寄生组合继承的实现原理,

    类A作为父类,类B作为子类。--我们利用call使B继承A的私有方法,让B的原型等于A的原型,然后让B的原型的构造函数为B

    //给Object类的原型上增加一个兼容非标准浏览器的exCreate方法,实现和create方法一样的功能
    Object.prototype.exCreate = function (obj) {
    function fn() {
    };
    fn.prototype = obj;
    return new fn();
    }
    //类A
    function A() {
    this.x = 100;
    }
    A.prototype.getX = function () {
    console.log(this.x);
    }
    //类B
    function B() {
    //实现继承类A的私有属性
    A.call(this);
    }
    //实现类B的原型为类A的原型并且利用constructor使原型的构造函数为B
    B.prototype = Object.exCreate(A.prototype);
    B.prototype.constructor = B;
    var c = new B();
    console.log(c);

    这个时候我们会发现,B已经继承A的一些属性和方法并且B的第一层 __proto__上可以增加新的原型方法,切不会影响第二层__protp__即A上的方法getX()
    当我们修改A的原型上的getX时,B上也同样修改了。
  • 相关阅读:
    c# 扩展方法奇思妙用高级篇八:Type类扩展
    Asp.Net 上传大文件专题
    波形捕捉:(2)创建捕捉设备对象
    Capturing Waveforms【译】
    波形捕捉:(1)枚举"捕捉设备"
    C# 调用sql 2000存储过程
    HTTP请求流程(一)流程简介
    Asp.Net 上传大文件专题(4)利用ajax技术显示上传进度
    c# GDI+简单绘图(四)
    波形捕捉:(5)“捕捉缓冲区”信息
  • 原文地址:https://www.cnblogs.com/hjdjs/p/6272006.html
Copyright © 2020-2023  润新知