zoukankan      html  css  js  c++  java
  • js中的继承总结全( 含new 原理过程 )

    1. 借用 new 构造函数继承

      原理:  利用 new 的原理, 通过apply,call , bind 改变 this , 只能实现部分方法的继承: 

        MDN对new的描述: new 运算符创建一个用户自定义的对象类型的实例具有构造函数的内置对象的实例

         new的原理过程:  var  fn = new Foo()

          1.1 创建空函数 fn(){} , 此时: fn.__proto__ === Funciton.prototype  ,, fn.construtor === Function

              

          1.2 设置新函数的constructor属 性为构造函数的名称,设置新对象的proto属性指向构造函数的prototype对象;
            fn.__proto__ = Foo.prototype;
            扩展了新对象的原型链

          1.3 使用新对象调用函数,函数中的this被指向新实例对象:
            ClassA.call(obj);  //{}.构造函数();

          1.4.返回this指针。当存在显示的返回时,返回return后面的内容。新建的空对象作废。

            function test() {
              this.name = "test";
            }
            test.prototype = {
              a:{},
              b:{}
            }

            var c = new test();

      缺点: 不能继承构造函数prototype原型上的方法,  只能部分继承

    2. 借用原型链__proto__找构造函数prototype原型继承

      原理: 利用对象的__proto__向上, 找到构造函数的prototype原型

      缺点:

    3. 组合继承( 结合构造和原型 )

      3.1 

      3.2

      3.3  最完美继承

      缺点:

    4. ES6的class实现的继承

      优点:

  • 相关阅读:
    【HDU 2874】Connections between cities(LCA)
    【Gym 100947C】Rotate It !!
    【CodeForces 615E】Hexagons
    Course Selection CodeChef
    UVA 10779 Collectors Problem[最大流]
    1855: [Scoi2010]股票交易[单调队列优化DP]
    1854: [Scoi2010]游戏[并查集]
    1853: [Scoi2010]幸运数字[容斥原理]
    poj3233 Matrix Power Series
    3969 [Mz]平方和【斐波那契平方和】
  • 原文地址:https://www.cnblogs.com/andy-lehhaxm/p/10654162.html
Copyright © 2011-2022 走看看