zoukankan      html  css  js  c++  java
  • 创建对象、工厂模式、构造函数

     1 //创建一个对象,然后给这个对象新建属性和方法
     2 
     3 var box = new Object();        //创建对象
     4 box.user='Fu';                //添加属性
     5 box.age=23;
     6 box.run=function(){
     7     return this.user+this.age+'运行中...';
     8 }
     9 //this表示new Object()实例化出来的那个对象
    10 
    11 alert(box);        //object Object
    12 alert(box.user);
    13 alert(box.run());
    14 
    15 
    16 var box2=new Object();
    17 box2.user='Baixc';
    18 box2.age=24;
    19 box2.run=function(){
    20     return this.user+this.age+'运行中...';
    21 }
    22 
    23 alert(box2.run());
    24 
    25 
    26 
    27 //工厂模式
    28 //工厂模式解决了重复实例化的问题,但还有一个问题,那就是识别问题,因为根本无法高兴才他们到底是哪个对象的实例。
    29 function creareObject(user,age){
    30     var obj = nwe Object();        //创建对象
    31     obj.user=user;                //添加属性
    32     obj.age=age;
    33     obj.run=function(){            //添加方法
    34         return thi.user+this.age+'运行中...';
    35     };
    36     return obj;                    //返回对象引用
    37 }
    38 
    39 var box1=creareObject('Fu',23);    //创建第一个对象
    40 var box2=creareObject('Baixc',22);    //创建第二个对象
    41 
    42 alert(box1.run());    //打印第一个对象实例的run()方法
    43 alert(box2.run());
    44 
    45 alert(typeof box1);    //object
    46 alert(typeof box2);    //object
    47 
    48 alert(box1 instanceof Object);    //true
    49 alert(box2 instanceof Object);    //true
    50 
    51 
    52 
    53 // 构造函数(构造方法)可以用来创建特定的对象。
    54 function Box(user,age){    //创建一个对象
    55     this.user=user;        //添加一个属性
    56     this.age=age;
    57     this.run=function(){
    58         return this.user+this.age+'运行中...';
    59     };        //这个分号是一定要加的
    60 };
    61 
    62 var box1=new Box('Fu',23);
    63 var box2=new Box('Baixc',22);
    64 
    65 alert(box1.run());
    66 alert(box2.run());
    67 alert(Box('Fu',23));    //构造函数,用普通函数调用一般是无效的,必须使用new运算符
    68 
    69 /*
    70 使用构造函数的方法,即解决了重复实例化的问题,又解决了对象识别的问题,但问题是,这里并没有new Object(),为什么可以实例化Box(),这个是哪里来的呢?
    71 
    72 使用了构造函数的方法,和使用工厂模式的方法他们不同之处如下:
    73 1、构造函数方法没有显示的创建对象(new Object());
    74 2、直接将属性和方法赋值给this对象;
    75 3、没有return语句。
    76 
    77 
    78 构造函数规范:
    79 1、构造函数也是函数,但函数名第一个字母大写
    80 2、必须new构造函数名(),new Box(),而这个Box第一个字母也是大写的。
    81 3、必须使用new运算符
    82 
    83 */
    84 
    85 function box(){        //普通函数首字母无需大写
    86 
    87 }
    88 
    89 
    90 var o = new Object();
    91 Box.call(o,'Fu',23);    //对向冒充
    92 alert(o.run());
    高否?富否?帅否? 否? 滚去学习!
  • 相关阅读:
    学习笔记—查找
    水晶报表图表制作问题
    Chrome对最小字体的限制
    Devexpress的ASPxDateEdit控件设置其‘today’ 为客户端当前日期
    水晶报表多表数据源
    System.Web.HttpValueCollection.ThrowIfMaxHttpCollectionKeysExceeded
    利用水晶报表制作甘特图
    水晶报表打印时最后多打印一空白页
    day3学习
    Python高级自动化培训day1
  • 原文地址:https://www.cnblogs.com/baixc/p/3390169.html
Copyright © 2011-2022 走看看