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实现的继承

      优点:

  • 相关阅读:
    jQuery中ajax的4种常用请求方式
    前端常见浏览器兼容性问题解决方案
    平衡二叉树---将有序数组转换为二叉搜索树
    equals
    Java中的System.out.println
    System.arraycopy --全面解释(就是那么有爱心)
    计算机网络实验-ACL-OSPF-RIP
    pip install lxml
    Spark-shell --常用命令 (command)
    《Thinking in Java》---Summary of Chapter 2
  • 原文地址:https://www.cnblogs.com/andy-lehhaxm/p/10654162.html
Copyright © 2011-2022 走看看