javascript中对象的创建

本文是根据李炎恢老师的相关视频和讲义整理成的,如果感兴趣可以亲自去听李炎恢老师的相关课程。讲的很详细。下面是链接:javascript视频教程

1.一般方法:

创建一个对象,然后给这个对象新建属性和方法。
  var box = new
Object();                   //创建一个Object 对象
      box.name =
‘Lee‘;                           //创建一个name 属性并赋值
      box.age =
100;                              //创建一个age 属性并赋值
      box.run = function ()
{            //创建一个run()方法并返回值
   return
this.name + this.age + ‘运行中...‘;
   };
  alert(box.run());                        //输出属性和方法的值

缺点:不适合大量创建类似对象,这样会需要很多代码

  2.工厂模式

为了解决多个类似对象声明的问题,我们可以使用一种叫做工厂模式的方法,这种方法
就是为了解决实例化对象产生大量重复的问题。

function createObject(name,age){

var obj = new Object();

obj.name = name;

obj.age = age;

obj.run = function(){


return this.name + this.age
+"运行中……";

};

return
obj;

}

var box1 =
creatObject("Lee",100);

var box2 = creatObject("xia",200);

缺点:无法知道他们到底是哪个对象的实例。

alert(box1 instanceof
Object);     //true

 3.
构造函数法

function Box(name,age){

this.name = name;

this.age = age;

this.run = function(){

return  this.name +this.age
+"正在运行中……";

};

}

var box1 = new Box("Lee",100);

var box2 = new Box("xia",200);

alert(box1 instanceof
Box);    //true,很清楚的知道box1属于Box类

使用了构造函数的方法,和使用工厂模式的方法他们不同之处如下:
<1>构造函数方法没有显示的创建对象(new Object());
<2>直接将属性和方法赋值给this 对象;
<3>没有renturn 语句。

构造函数的方法有一些规范:
<1>函数名和实例化构造名相同且大写,(PS:非强制,但这么写有助于区分构造函数和普通函数);
<2>通过构造函数创建对象,必须使用new 运算符。

既然通过构造函数可以创建对象,那么这个对象是哪里来的,new Object()在什么地方
执行了?执行的过程如下:
<1>当使用了构造函数,并且new 构造函数(),那么就后台执行了new Object();
<2>将构造函数的作用域给新对象,(即new Object()创建出的对象),而函数体内的this 就代表new
Object()出来的对象。
<3>执行构造函数内的代码;
<4>返回新对象(后台直接返回)。

构造函数和普通函数的唯一区别,就是他们调用的方式不同。只不过,构造函数也是函
数,必须用new 运算符来调用,否则就是普通函数。

var box = new Box(‘Lee‘,
100);           //构造模式调用
alert(box.run());

Box(‘Lee‘,
20);                      //普通模式调用,无效

var o = new Object();
Box.call(o, ‘Jack‘, 200);
                    //对象冒充调用
alert(o.run());

关于对象中的引用类型:

var box1 = new Box(‘Lee‘, 100);
var box2 = new Box(‘Lee‘, 100);

alert(box1.name ==
box2.name);     //true,属性的值相等
alert(box1.run ==
box2.run);          //false,方法其实也是一种引用地址
alert(box1.run() ==
box2.run());      //true,方法的值相等,因为传参一致

可见方法也是一个引用类型,每一个实例中的引用类型都是使用不同的地址;

时间: 2024-10-05 18:38:23

javascript中对象的创建的相关文章

【JS】JavaScript中对象的创建与原型模式

 ECMAScript中没有类的概念,因此它的对象与基于类的语言中的对象有所不同. 1.理解对象 创建对象最简单的方式是创建一个Object实例,再为它添加属性和方法,如下: <span style="font-family:SimSun;font-size:12px;">var people = new Object(); people.age = 20; people.sayAge = function(){ alert(this.age); };</span

私人定制javascript中对象小知识点(Only For Me)

废话不多讲,先上笑话,然后再,.看懂这个的说明你的节操已经不再了. 晚饭后去理发店理发...割了吧...老板问我怎么剪,我悠悠的来一句往帅了剪...高潮往往令人想不到....旁边一在焗油烫头发的大妈说到 别这样为难老板,人家赚点钱不容易...首先如果你是高手那么请出门右转,如果你是菜鸟那么恭喜你,go on吧 全局对象在javascript程序中任何位置,都可以拈来就用的这种东西,是全局对象的属性.那么属性所在的对象也就是全局对象了.当javascript解释器启动时(或者任何Web浏览器加载新

JavaScript中的数组创建

JavaScript中的数组创建 数组是一个包含了对象或原始类型的有序集合.很难想象一个不使用数组的程序会是什么样. 以下是几种操作数组的方式: 初始化数组并设置初始值 通过索引访问数组元素 添加新元素 删除现有元素 本文涵盖了数组的初始化以及设置初始值的操作.在JavaScript中要做到这一点的基本方法是使用数组字面量,例如[1, 5, 8]或是数组构造器new Array (1, 5, 8). 除了手动枚举之外,JavaScript还提供了更有趣更直接的数组创建方式.让我一起看看在Java

JavaScript中对象类型的转换小结

对象到字符串和对象到数字类型的转换涉及到两个重要的方法,最终的转换结果会受到这两个方法返回结果的影响,这两个方法就是toString和valueOf.所有的对象都会从Object对象中继承到这两个方法.toString方法 用于返回对象的字符串表示(但是其实也可以不返回字符串).对于默认从Object继承而来的toString方法并不会返回太多有意义的内容.而valueOf方法目的是返回一个可以表示对象的原始类型值,但是由于对象的复杂性,大多数情况下根本不可能用一个原始类型值来表示,所以默认的v

JavaScript中对象属性的添加和删除

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /* * 用.为对象添加属性 用关键字delete删除属性 用[]添加属性 和.的不同 r.name==r["name"]; r.

JVM中对象的创建过程

JVM中对象的创建过程如以下流程图中所示: 对其主要步骤进行详细阐述: 为新生对象分配内存: 内存的分配方式: 指针碰撞:假设Java堆中内存是绝对规整的,所有用过的内存放在一边,空闲的内存在另一边,中间防着一个指针作为分界的指示器,那么当分配内存时仅需移动指针即可. 空闲列表:维护一个列表,记录那些内存可用,分配时找出一块足够大的空间进行划分,并更新列表记录. 选择:内配方式的选择依赖于内存大小是否规整,内存大小的规整,依赖于垃圾收集器是否带有压缩整理功能. 并发情况下保证线程安全: 方法一:

JavaScript中对象的属性

原文:http://www.2ality.com/2012/10/javascript-properties.html JavaScript中有三种不同类型的属性:命名数据属性(named data properties),命名访问器属性(named accessor properties)以及内部属性(internal properties). 命名数据属性 这种属性就是我们通常所用的"普通"属性,它用来将一个字符串名称映射到某个值上.比如,下面的对象obj有一个名为字符串"

js中对象的创建

json方式,构造函数方式,Object方式,属性的删除和对象的销毁 <html> <head> <title>js中的对象的创建</title> <script type="text/javascript"> // 用json方式创建对象,注意用冒号和逗号 var iphone5={ 'pinpai':'苹果', 'price':'5300元', 'color':'黑色', 'length':'15cm', 'msg':fu

JavaScript中对象的浅复制和深复制

在JavaScript中,如果要复制一个变量我们应该怎么做呢?下面这种做法是最简单的一种形式: //把a复制给b let a = 12; let b = a; 这种复制方法只能适用于基本类型,如果a是对象怎么办呢?我们先来看看上面的代码在内存中做了什么事: 声明了变量a = 12,栈内存会分配一块区域来存储,如上图所示.把a赋给b,会在栈中重新开辟一块区域来存储b,并且b的值就是a的值. 假如a是对象,内存做了什么事呢?来看下面的例子: let a = {}; let b = a; 如图所示,对