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

      优点:

  • 相关阅读:
    Python 数据类型:字典
    .Net开发工程师工具箱
    Javascript事件设计模式(七)
    LINQ学习之旅 (四)
    JavaScript实现抽象类与虚方法(六)
    Javascript中的反射机制(五)
    Javascript中类的实现机制(四)
    Javascript中的函数(三)
    Javascript面向对象基础(二)
    Web应用程序项目XXXX已配置为使用IIS。无法访问IIS 元数据库。您没有足够的特权访问计算机上的IIS
  • 原文地址:https://www.cnblogs.com/andy-lehhaxm/p/10654162.html
Copyright © 2011-2022 走看看