在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除了他们的名字是不一样的构造。其他是相同的。那么我们应该怎么解决呢这个?我觉得。原型和继承的使用是必不可少的,本文介绍了可能。

JavaScript总结一下--创建对象的更多相关文章

  1. 关于JavaScript中的创建对象的学习总结

    一.最简单的对象创建方法 在JavaScript中,直接使用Object构造函数或对象字面量都可以很轻易地创建单个对象,缺点是:创建具有同一个接口(标准的OO中的接口概念)的多个对象时,会有大量重复代 ...

  2. javascript继承(二)—创建对象的三种模式

    一.工厂模式 function createPerson(name,age){ var o = {}; o.name = name; o.age = age; o.sayHi = function() ...

  3. javascript三种创建对象的方式

    javascript是一种“基于prototype的面向对象语言“,与java有非常大的区别,无法通过类来创建对象.那么,既然是面象对象的,如何来创建对象呢? 一.通过”字面量“方式创建. 方法:将成 ...

  4. Javascript面向对象之创建对象

    面向对象的语言具有一个共同的标志,那就是具有“类”的概念,但是在javascript中没有类的概念,在js中将对象定义为“无序属性的集合,其属性可以包含基本值,对象或者函数”,即其将对象看作是一组名值 ...

  5. JavaScript构造函数+原型创建对象,原型链+借用构造函数模式继承父类练习

    虽然经常说是做前端开发的,但常常使用的技术反而是JQuery比较多一点.在JavaScript的使用上相对而言少些.尤其是在创建对象使用原型链继承上面,在项目开发中很少用到.所以今天做个demo练习一 ...

  6. JavaScript基础:创建对象

    先来看两种简单的对象创建方式: 1.Object构造函数方法 var person = new Object(); person.name = "Nicholas"; person ...

  7. JavaScript高级特性-创建对象的九种方式

    1. 对象字面量 通过这种方式创建对象极为简单,将属性名用引号括起来,再将属性名和属性值之间以冒号分隔,各属性名值对之后用逗号隔开,最后一个属性不用逗号隔开,所有的属性名值对用大括号括起来,像这样: ...

  8. 几类javascript常用的创建对象方法

    JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观.模块化和可重复使用的方式进行程序开发. 一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象.比如要 ...

  9. JavaScript 用new创建对象的过程

       在JavaScript中创建自定义对象都需要用new运算符,那么创建对象的过程是什么样的呢? 例如现在有如下构造函数: function Person(name) { this.name = n ...

  10. JavaScript 三种创建对象的方法

    JavaScript中对象的创建有以下几种方式: (1)使用内置对象 (2)使用JSON符号 (3)自定义对象构造 一.使用内置对象 JavaScript可用的内置对象可分为两种: 1,JavaScr ...

随机推荐

  1. ROM签名脚本[原创]

    下面的代码是bash脚本来的.需要保存为*.sh后序. # !/bin/bash #usage: signapk.sh [-hs] [zipfile-unsigned | update.zip] #A ...

  2. javascript 的bind/apply/call性能

    javascript有两种使用频率非常高的三个内置的功能:bind/apply/call.许多技术是基于高点,这些功能实现.这三个功能被用来改变的功能运行环境.从而达到代码复用的目的. 先来所说bin ...

  3. ASIHTTPRequest 对GET POST 请求简包

    1.ASIHTTPRequest一个简短的引论 github下载链接https://github.com/pokeb/asi-http-request 2.ASIHTTPRequest 对GET和PO ...

  4. Hadoop入门进阶步步高(五)-搭建Hadoop集群

    五.搭建Hadoop集群 上面的步骤,确认了单机能够运行Hadoop的伪分布运行,真正的分布式运行无非也就是多几台slave机器而已,配置方面的有一点点差别,配置起来就很easy了. 1.准备三台se ...

  5. VS找不到约束

    [问题叙述性说明] watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3hsMDkyMQ==/font/5a6L5L2T/fontsize/400/fill/ ...

  6. Nagios显示器mysql定从库: libmysqlclient.so.18: cannot open shared object file: No such

    做mysql的slave时间监控,必须check_mysql文字,check当误差: error while loading shared libraries: libmysqlclient.so.1 ...

  7. 的无线通信网络的学习LTE的关键技术HARQ(20141217)

    今天,我们就来一起看一下LTE申请的关键技术HARQ(自己主动混合重传技术) 因为在信道传输过程中的信息,它会产生信息丢失,因此,为了维持的信息的完整性.总是有重发信息,完成所有的迄今收到的资料. 首 ...

  8. 【C语言探索之旅】 第一部分第四课第一章:变量的世界之内存那档事

    内容简介 1.课程大纲 2.第一部分第四课第一章:变量的世界之内存那档事 3.第一部分第四课第二章预告:变量的世界之声明变量 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答 ...

  9. PowerDesigner 为sql生成凝视

    在使用pd时发现生成的语句中没有行凝视,这样就得手动来加这些凝视,后来在网上找了一些方法.确实得到了解决,分享一下. 在Database-->edit Current DBMS... 设置dbm ...

  10. Apple Watch开发了一些细节和总结

    本文旨在总结最近Watch在发展中遇到的问题和细节 1.左右Watch真机调试问题 一般的情况下,你为IOS主应用创建了一个extention,比方说Today Extension .Xcode都会自 ...