在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. 【SICP读书笔记(四)】练习2.27 --- 表序列reverse的扩展:树结构的deep-reverse

    题目要求是,修改练习2.18所做的reverse过程,得到一个deep-reverse过程.它以一个表为参数,返回另一个表作为值,结果表中的元素反转过来,其中的子树也反转. 例如: (define x ...

  2. C. Captain Marmot (Codeforces Round #271)

    C. Captain Marmot time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  3. Java Swing 树状组件JTree的使用方法(转)

    树中特定的节点可以由 TreePath(封装节点及其所有祖先的对象)标识,或由其显示行(其中显示区域中的每一行都显示一个节点)标识.展开 节点是一个非叶节点(由返回 false 的 TreeModel ...

  4. Code::Blocks项目配置基础

    File 菜单 New :新建( Empty file/file . class . project . build target ) . Recent projects/files :近期打开的项目 ...

  5. 使用Jfree实现吧条形图,java代码

    使用Jfree实现吧条形图,java代码.它可能在生产的报告被常用,之后,主动生成自己的代码,可以随意查看.自由地配置图表的各种性质,为了达到他们的要求和目标 package test1; impor ...

  6. Velocity脚本新手教程

    从网络下的数据汇编 一.Velocity简介 Velocity它是Apache该公司的开源产品,它是一套基于Java语言模板引擎,背景可以非常灵活的数据与模板文件一起反对.他直言不讳地说:,人使用模板 ...

  7. VS找不到约束

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

  8. 【Android进阶】Activity和Fragement中onSaveInstanceState()的使用详解

    在activity(或者是fragement)被杀掉之前调用保存每个实例的状态,以保证该状态可以在onCreate(Bundle)或者onRestoreInstanceState(Bundle) (传 ...

  9. NYOJ 14 场地安排

    /* 中国标题的含义: 中国的翻译: 标题效果:寻求预定场地的最大数量,只有一个活动可以安排时间 解决问题的思路:然后使用结构数.之后再构建一个排序,排序结束时间活动.然后基于开始时间为大于一个事件的 ...

  10. 从XML文件乱码问题,探寻其背后的原理(转)

    由于网友反应本文图片不能显示,由于时间关系未能及时修正.请访问原文地址: 本文出自http://blog.csdn.net/dinglang_2009/article/details/6895355, ...