• JavaScript之四大继承方法


      一、传统形式  -->原型链

      缺点:像下面这个案例,如果我只是需要lastName这个属性,那么还会继承到name这个属性,浪费空间。

    1       Grand.prototype.lastName = "Y";
    2         function Grand(){};
    3         Father.prototype = Grand;
    4         function Father(){
    5             this.name = 'Father';
    6         };
    7         Son.prototype = Father;
    8         function Son(){};
    9         let son   = new Son();
    View Code

      二:借用构造函数

      缺点:借用别人的构造函数对象,但是原型还是使用我们自己的,等于只是调用了它的方法,视觉上虽然省了代码,但是该执行还是得执行。

     1       function Person(name,sex,age){
     2             this.name = name
     3             this.sex = sex;
     4             this.age = age;
     5         }
     6         function Student(name,sex,age,grade){
     7             Person.call(this,name,sex,grade);
     8             /*
     9                 相当于
    10                 this.name = name;
    11                 this.sex  = sex;
    12                 this.age  = age;
    13             */
    14 
    15             this.grade = grade;
    16         }
    View Code

      三、共享原型

      缺点:如果其中一个修改了原型,那么另外一个也会受到干扰。

            Father.prototype.lastName = "Y";
            function Father(){};
            function Son(){};
            Son.prototype = Father.prototype;
    
            //若执行下面这一条,那么Father.prototype.lastName 也会相应发生改变
            Son.prototype.lastName = 'Son';
     
    View Code

      四:圣杯模式

      

      function inherit(Target,Orgin){
                
                function F(){};
                F.prototype = Orgin.prototype;
                Target.prototype = Orgin.prototype;
                Target.prototype.constructor = Target;
                Target.prototype.uber = Orgin.prototype;//uber相当于supre,利用这个查询最终继承谁
    
            }
    
    
            
            Father.prototype.lastName = 'Y';
            function Father(){};
            function Son(){};
    View Code

      五:总结

      传统继承形式:原型链,会过多继承没用的属性,浪费空间。

      借用构造函数:不能继承借用构造函数的原型,每次创建一个对象都要多执行一次

      共享性☆☆☆☆☆☆:不能随便更改自己的原型,否则会影响继承/被继承的原型。

      圣杯模式☆☆☆☆☆☆:继承或者非继承对象修改自己的原型,不会影响另外一个的原型。

  • 相关阅读:
    rpm 和 yum 的使用技巧
    启动Hadoop时遇到Name or service not knownstname 错误
    使用Pod集成Bugtags填坑记
    xcode 上 crash 调试的三种方法
    在MAC上安装虚拟机搭建Ubuntu开发环境
    shell复习---文件解压命令
    XCODE7新变化之-test
    Object-C单元测试&MOCK(摘录精选)
    shell复习笔记----查找与替换
    shell复习笔记----命令与参数
  • 原文地址:https://www.cnblogs.com/Yzengxin/p/16076405.html
Copyright © 2020-2023  润新知