• JavaScript总结一下--创建对象


          在JavaScript象主要就是用下面三种语句

    1. var box=new Object(); 或var box=Object();
    2. var box={};//字面量
    3. function Box(){}。//构造函数

          如今。我们就牛刀小试。来创建一个对象

    var man=new Object();//创建Object对象的实例:man
    man.name='Mr.Q';//man对象的name属性
    man.sex=30;//man对象的name
    man.work=function(){
    return this.name+' is working.';
    };
    alert(man instanceof Object);//true 是Object对象的实例
    alert(man.work());//Mr.Q is working.

          假设要创建和以上对象类似的对象怎么办?

          方案一:直接赋值;缺点:会覆盖原来对象

    var woman=man;
    woman.name='Ms.L';//man对象的name属性
    woman.sex=21;//man对象的name
    woman.work=function(){
    return this.name+' is working.';
    };
    alert(woman.name);//Ms.L 会将man对象的name属性覆盖掉

          

          方案二:用同样的方式再实例化一个对象;缺点:会产生大量反复代码

    var woman=new Object();//创建Object对象的实例:man
    woman.name='Ms.L';//man对象的name属性
    woman.sex=21;//man对象的name
    woman.work=function(){
    return this.name+' is working.';
    };
    alert(woman.work());//Mr.Q is working.

          优化一:工厂模式:解决实例化大量类似对象产生反复代码问题

    function createobject(name,sex){
    var obj=new Object();
    obj.name=name;
    obj.sex=sex;
    obj.work=function(){
    return this.name+' is working';
    };
    return obj;
    }
    var man=createobject('Mr.Q',30);
    var woman=createobject('Ms.L',21);
    alert(man.work());
    alert(woman.work());

               弊端: 由于是工厂模式嘛!批量生产,产品都一个样。对象之间无法区分,他们全都是Object对象的实例。
          优化二:构造函数解决反复实例化和对象识别问题

    function Person(name,sex){//人类
    this.name=name;
    this.sex=sex;
    this.work=function(){
    return this.name+' is working';
    };
    }
    var man=new Person('Mr.Q','男');
    var woman=new Person('Ms.L','女');
    alert(man instanceof Object);
    alert(man instanceof Person);
    
    function ET(name,sex){//外星人
    this.name=name;
    this.sex=sex;
    this.work=function(){
    return this.name+' is working';
    };
    }
    var marsman=new ET('Mr.Q','男');
    alert(marsman instanceof ET);//true
    alert(marsman instanceof Person);//false mrasman是ET对象的实例,而不是Person对象的实例

          总结:在这篇文章中我们简介了创建一个对象的三种方式:Object,字面量和构造函数。而当创建非常多类似对象时,工厂模式是个不错的选择,但由生产批量标准化,产品缺乏个性,因此,我们使用构造。为不同的对象区别。

    但是,当我们通过构造时,不同的对象来区分,仍不能避免再次生成代码的问题,像上面Person和ET除了他们的名字是不一样的构造。其他是相同的。那么我们应该怎么解决呢这个?我觉得。原型和继承的使用是必不可少的,本文介绍了可能。

  • 相关阅读:
    plaidctf2015 uncorrupt png
    Tsinghua dsa pa2
    课上实验-小软件破解
    HBase Block Cache(块缓存)
    JVM垃圾回收(二)- Minor GC vs Major GC vs Full GC
    JVM垃圾回收(一)- 什么是垃圾回收
    HBase Region 各个状态的转换
    HBase架构
    用GraphX分析伴生网络(二)
    用GraphX分析伴生网络(一)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5020959.html
Copyright © 2020-2023  润新知