zoukankan      html  css  js  c++  java
  • 面向对象的几种方法详解(后)

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

    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());

  • 相关阅读:
    C语言第0次作业
    C博客作业01分支、顺序结构
    C博客第02次作业循环结构
    关于编写有效用例的12秘诀
    关于调用FTP中遇到的问题以及解决方案
    关于FtpWebRequest.Timeout属性的理解
    WPF中四种不同的测量单位
    关于检查Oracle表及列是否存在SQL语句
    ArcSDE configuration files
    C#判断不同版本的Excel
  • 原文地址:https://www.cnblogs.com/luoguixin/p/6143382.html
Copyright © 2011-2022 走看看