• 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

      五:总结

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

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

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

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

  • 相关阅读:
    年近30,朋友聚会都聊什么?
    2016世界最热门的编程语言与薪资揭秘
    程序员的春天来了,最美赏花旅游地十大攻略
    雄联盟工程师独家分享:如何使开发更有效率
    小偷被抓叫嚣:我不偷警察没饭吃
    3.7女生节:被程序员男友送的奇葩礼物宠哭了
    最适合程序员加班吃的6大营养美食
    谷歌汽车出误判曝光 6大奇葩科技更牛
    【程序员的爱情】彼岸花开谁又种下了执念
    分享10个免费或便宜的Photoshop替代工具
  • 原文地址:https://www.cnblogs.com/Yzengxin/p/16076405.html
Copyright © 2020-2023  润新知