zoukankan      html  css  js  c++  java
  • ES5的继承方式

    ES5中调用new的操作

    1.先创建一个新的对象obj = {}
    2.给新对象obj设置原型属性 obj.proto = A.prototype;
    3.给新对象设置实例属性 A.constructor.apply(obj,args),将属性和方法实例化,constructor中的this指向的是新创建的obj对象
    4.返回构造函数的结果,obj / this / 其他引用对象;

    原型链继承

    1. 子类的原型是父类的实例对象 child.prototype = new father();
    2. 修改子类原型的constructor(未改之前指向father 即 new father().constructor == father) child.prototype.constructor = child;
      这样子类child就具有了和父类相同的属性和方法(在child的原型对象中)
      子类继承父类的方式是通过中间的父类的实例对象

    组合继承

    1. 子类的原型是父类的实例对象 child.prototype = new father(),实现原型属性和方法的继承
    2. 修改子类的原型对象的constructor指向子类,
    3. 在子类的构造函数中加入父类构造函数的调用 super.call(this),实现父类实例属性的调用。
      组合继承的缺点是 会调用两次父类的构造函数,一次是在子类的构造函数中调用,另一次是在子类继承父类的实例对象 new father的时候。

    寄生组合继承

    1. 创建一个新的对象obj,让obj指向father的原型对象father.prototype ,obj = Object.create(father.prototype)
    2. 将子类的原型对象设置成obj,child.prototype = obj,实现子类可以继承父类的原型对象中的属性,子类实例对象间属性的共有性。
    3. 在子类的构造函数中调用 father.call(this), 实现子类可以继承父类的实例属性,并保持子类实例对象间属性的独立性。
      子类继承父类的方式主要是:直接将父类的原型对象和实例属性赋给了子类。

    ES5继承的主要方式是:先创建子类的this对象,将父类的方法和属性绑定到子类上,father.appply(this,args);

  • 相关阅读:
    索引yellow 分片 UNASSIGNED 解决方案1
    Linux zip压缩多文件
    查询数据库实例名,服务名,和oracle_sid
    excel2csv 多sheet拆分到不同csv
    创建按月自动分区表
    自动生成sequence
    oracle 11g 分区表创建(自动按年、月、日分区)
    linux 查找字符串
    Oracle 字符串截取和位置
    mongodb查询某个字段数据
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/11906777.html
Copyright © 2011-2022 走看看