JavaScript总结一下--创建对象
在JavaScript象主要就是用下面三种语句:
- var box=new Object(); 或var box=Object();
- var box={};//字面量
- 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总结一下--创建对象的更多相关文章
- 关于JavaScript中的创建对象的学习总结
一.最简单的对象创建方法 在JavaScript中,直接使用Object构造函数或对象字面量都可以很轻易地创建单个对象,缺点是:创建具有同一个接口(标准的OO中的接口概念)的多个对象时,会有大量重复代 ...
- javascript继承(二)—创建对象的三种模式
一.工厂模式 function createPerson(name,age){ var o = {}; o.name = name; o.age = age; o.sayHi = function() ...
- javascript三种创建对象的方式
javascript是一种“基于prototype的面向对象语言“,与java有非常大的区别,无法通过类来创建对象.那么,既然是面象对象的,如何来创建对象呢? 一.通过”字面量“方式创建. 方法:将成 ...
- Javascript面向对象之创建对象
面向对象的语言具有一个共同的标志,那就是具有“类”的概念,但是在javascript中没有类的概念,在js中将对象定义为“无序属性的集合,其属性可以包含基本值,对象或者函数”,即其将对象看作是一组名值 ...
- JavaScript构造函数+原型创建对象,原型链+借用构造函数模式继承父类练习
虽然经常说是做前端开发的,但常常使用的技术反而是JQuery比较多一点.在JavaScript的使用上相对而言少些.尤其是在创建对象使用原型链继承上面,在项目开发中很少用到.所以今天做个demo练习一 ...
- JavaScript基础:创建对象
先来看两种简单的对象创建方式: 1.Object构造函数方法 var person = new Object(); person.name = "Nicholas"; person ...
- JavaScript高级特性-创建对象的九种方式
1. 对象字面量 通过这种方式创建对象极为简单,将属性名用引号括起来,再将属性名和属性值之间以冒号分隔,各属性名值对之后用逗号隔开,最后一个属性不用逗号隔开,所有的属性名值对用大括号括起来,像这样: ...
- 几类javascript常用的创建对象方法
JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观.模块化和可重复使用的方式进行程序开发. 一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象.比如要 ...
- JavaScript 用new创建对象的过程
在JavaScript中创建自定义对象都需要用new运算符,那么创建对象的过程是什么样的呢? 例如现在有如下构造函数: function Person(name) { this.name = n ...
- JavaScript 三种创建对象的方法
JavaScript中对象的创建有以下几种方式: (1)使用内置对象 (2)使用JSON符号 (3)自定义对象构造 一.使用内置对象 JavaScript可用的内置对象可分为两种: 1,JavaScr ...
随机推荐
- java反编译
反编译工具下载地址 http://download.csdn.net/detail/u011110110/8621653 反编译方法: 第一步:你先把下载的包的后缀名改成.zip第二步:到网上搜索de ...
- partial 的好处
1.可以将一个类中的属 性, 方法分类来写 2.方法了可以写在多个类中, 这样可以对方法进行分类 由于项目上使用了代码生成工具, 自定义的一些按钮事件默认是不生成的,得自己定义,如果把定义的代码写 ...
- HDU 1069 Monkey and Banana(DP 长方体堆放问题)
Monkey and Banana Problem Description A group of researchers are designing an experiment to test the ...
- 2015广东工业大学ACM学校巡回赛 I 游戏高手 (如压力dp)
Problem I: 游戏王 Description 小学的时候,Stubird很喜欢玩游戏王.有一天,他发现了一个绝佳的连锁组合,这个连锁组合须要6张卡. 但是他一张都没有,但是他的那些朋友们有.只 ...
- JList用法小结
JList用法小结 分类: JAVA技术2007-08-11 01:02 18485人阅读 评论(11) 收藏 举报 stringvectorclassjavaactionobject ...
- [TroubleShooting] The server network address can not be reached or does not exist
Backtround: I'm trying to set up mirroring between two sql 2008 R2 databases on different servers in ...
- poj2386 Lake Counting(简单DFS)
转载请注明出处:viewmode=contents">http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://poj ...
- 寒假了,想深入学习c++
本来在图书馆借了好几本属,但是,自己没有经验,借的书都太深奥,看不懂,哎,桑心!
- 为RadComboBox添加SelectionChanging事件
代码非标准,仅供参考. using System; using System.Collections.Generic; using System.Linq; using System.Windows. ...
- Android_Training
http://wiki.eoeandroid.com/Android_Training Android小白成长之0基础篇