• 面向对象的几种方法详解(后)


    四。组合构造函数+原型模型

    function Box(name,age){
    this.name=name; //保持独立的用构造函数
    this.age=age;
    this.family=['哥哥','姐姐','妹妹'];
    }
    Box.prototype={
    constructor:Box, //保持共享的用原型
    run:function(){
    return this.name+this.age+"100";
    }
    }
    var box1=new Box('罗桂鑫',18);
    alert(box1.run());
    alert(box1.family); //'哥哥','姐姐','妹妹'
    box1.family.push('弟弟');
    alert(box1.family); //'哥哥','姐姐','妹妹','弟弟'
    var box2=new Box('罗桂鑫',18);
    alert(box2.run());
    alert(box2.family); //'哥哥','姐姐','妹妹'

    这种混合模式很好的解决了传参和引用共享的大难题。是创建对象比较好的方法。

    五。寄生构造函数=工厂模式+构造函数

    function Box(name,age){
     var obj=new Object();
     obj.name=name;
     obj.age=age;
     obj.run=function(){
     return this.name+this.age+"运行中"
     };
     return obj;
     }
     var box1=new Box('罗桂鑫',100);
     alert(box1.run());
     var box2=new Box('罗桂鑫',200);
     alert(box2.run());

    六动态原型模式,可以将原型封装到构造函数里
     function Box(name,age){
    this.name=name; //保持独立的用构造函数
      this.age=age;
      this.family=['哥哥','姐姐','妹妹'];
      if(typeof this.run!='function'){
      Box.prototype.run=function(){
       return this.name+this.age+"100";
      }
      }
     }
     
     var box1=new Box('罗桂鑫',18);
    alert(box1.run());
     var box2=new Box('罗桂鑫',18);
    alert(box2.run());

    七。稳妥构造函数

    禁止使用 this 和 new,这里的 this 是构造函数里不使用 this ,
    这里的 new 是在外部实例化构造函数时不使用 new。这种创建方式叫做稳妥构造函数。

    function Box(name , age) {
    var obj = new Object();
    obj.run = function () {
    return name + age + '运行中...'; //直接打印参数即可
    };
    return obj;
    }
    var box1 = Box('罗桂鑫', 100); //直接调用函数
    alert(box1.run());

  • 相关阅读:
    第02组 Beta冲刺(4/5)
    第02组 Beta冲刺(3/5)
    第02组 Beta冲刺(2/5)
    第02组 Beta冲刺(1/5)
    第02组 Alpha事后诸葛亮
    第02组 Alpha冲刺(6/6)
    第02组 Alpha冲刺(5/6)
    第02组 Alpha冲刺(4/6)
    第02组 Alpha冲刺(3/6)
    2020系统综合实践1 微服务与Docker 基本入门
  • 原文地址:https://www.cnblogs.com/luoguixin/p/6143382.html
Copyright © 2020-2023  润新知