• 创建对象、工厂模式、构造函数


     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());
    高否?富否?帅否? 否? 滚去学习!
  • 相关阅读:
    什么是OOAD?什么是UML?
    Linux下Gvim 的基本操作-适合新手看
    关于mongodb ,redis,memcache之间见不乱理还乱的关系和作用
    phpcms常用标签
    请问如何更改dedecms“文件保存目录”的字符限制 ?
    如何通过刷百度指数来提高网站的权重
    HDU 1263(水果统计 **)
    HDU 1284(钱币兑换 背包/母函数)
    HDU 1028(数字拆分 分治)
    HDU 1036(平均速度 **)
  • 原文地址:https://www.cnblogs.com/baixc/p/3390169.html
Copyright © 2020-2023  润新知