js创建对象的三种方法

在介绍之前一定要弄清楚一个概念,比如var a = new Object(); 这里的a并不是一个对象,而是一个对象的实例。

一、用Json创造

 var a = {b:1,c:3};
 a.b;
 a.c;

在这种形式下,一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号),“ ‘键/值' 对”之间使用“,”(逗号)分隔。

二、用内置对象创造

内置的有Array、String、Object等等

 var a = new Object();
 a.name = 'Nic';
 a.age = 16;

 var b = a;//b和a同时引用一个对象
 b.name;//Nic
 b.age;

三、自定义对象

这个用的很普遍,因为Json有一个缺点就是只能创建一个对象,而自定义的话就如同一个模具,可以创建多个对象。(描述有点不准确)

<1>全用this

 function A(name ,age) {
     this.name = name;
     this.age = age;
     this.fun = function (){
         alert('fun');
     };
 }
 var a = new A("Nic",16);
 a.name;//Nic
 a.age;
 a.fun();//弹出'fun'

这样创造对象的特点:写在一个构造函数中,函数中的属性用this.XX = XX;的形式,属性之间‘;(分号)’隔开,创建对象时用new,初始化构造函数。

为什么在function中加this?如果不加this呢?

当你var a = new A("Nic",16);时,A中的this指向a,如果不加this,那么a.name为undefined,特别注意的是如果你不用new,而是var a = A(.....);那么A中的this指向的是Window,“new出来的对象this指向属性和方法依托的对象,不new出来相当于直接调用一个函数,this指向Window。

为什么说自定义的话像一个模具可以创造多个不同对象呢?

是因为只要改变传入的参数,就可以改变对象。

<2>使用prototype(原型)

 function A(name ,age) {
     this.name = name;
     this.age = age;
 } 

 A.prototype.fun = function (){
     alert('fun');
 };
 var a = new A("Nic",16);
 a.name;//Nic
 a.age;
 a.fun();//弹出'fun'

记住一句话,this的属性是私有的,而prototype的是共享的。在两个对象继承时会继承this,而不会继承prototype。

变量ab同时引用一个对象的时候,如果给a单独增加了一个方法a.sum();,那么b是不能调用该方法的。怎么才可以ab都能调用呢?那就给构造函数增加 一个prototype的sum方法时,变量ab都可以调用那个方法。可以这么想,构造器是一个爸爸,ab是他的儿子,爸爸有的东西儿子都可以有,但是大 儿子自己独有的东西小儿子是不会有的。

prototype这里说的不是很详细,想仔细了解的话可以看这里:

http://www.cnblogs.com/mindsbook/archive/2009/09/19/javascriptYouMustKnowPrototype.html

有什么意见欢迎交流。

js----对象的创建的更多相关文章

  1. js 对象的创建方式和对象的区别

    js一个有三种方法创建对象,这里做一个总结. 1.对象直接量 所谓对象直接量,可以看做是一副映射表,这个方法也是最直接的一个方法,个人比较建议, 1 2 3 4 5 6 7 8 9 10 11 12 ...

  2. js对象的创建

    一.通过对象直接量来创建 var emptyt={};  //相当于var empty=new Object; //如果属性名中包含空格.连字符(-).还有关键字,保留字时,要用字符串表示 var b ...

  3. js对象的创建与原型总结

    //1 新建对象 var box = new Object(); box.name = "lee"; box.age = 100; box.run = function(){ re ...

  4. js对象的创建模式

    方式一: Object构造函数模式 * 套路: 先创建空Object对象, 再动态添加属性/方法 * 适用场景: 起始时不确定对象内部数据 * 问题: 语句太多 /* 一个人: name:" ...

  5. JS对象的创建与使用

    本文内容:     1.介绍对象的两种类型:     2.创建对象并添加成员:     3.访问对象属性:     4.利用for循环枚举对象的属性类型:     5.利用关键字delete删除对象成 ...

  6. js对象的几种创建方式和js实现继承的方式[转]

    一.js对象的创建方式 1. 使用Object构造函数来创建一个对象,下面代码创建了一个person对象,并用两种方式打印出了Name的属性值. var person = new Object(); ...

  7. JS对象与PHP对象的对比

    一.对象的创建与访问 1.JS对象的创建与访问 //方式一(通过内置构造函数创建后添加属性) var obj = new Object(); obj.name = 'Lucy'; //通过点添加属性 ...

  8. javascript基础-js对象

    一.js对象的创建 1.普通最简单的方式 var teacher = new Object( ); teacher.name = "zhangsan"; teacher.age = ...

  9. 浅谈Js对象的概念、创建、调用、删除、修改!

    一.我们经常困惑,对象究竟是什么,其实这是一种思维,一种意识上的东西,就像我们都说    世界是有物质组成的道理一样,理解了下面的几句话!对象也不是那么抽象!    1.javascript中的所有事 ...

  10. js中对象的创建

    json方式,构造函数方式,Object方式,属性的删除和对象的销毁 <html> <head> <title>js中的对象的创建</title> &l ...

随机推荐

  1. 使用java8

    刚开始一直使用的jdk7,但是学习spark的时候spark推荐Jdk8,很多示例程序都用到了lambda 机器上安装jdk8只是实验用途,默认还想使用jdk7 安装完后 网上说这是因为jdk8安装的 ...

  2. 解决Lost connection to MySQL server at 'reading initial communication packet', 的方法

    今天用heidsql连接mysql时出了问题,提示:Lost connection to MySQL server at 'reading initial communication packet 网 ...

  3. PathAnimation

    使用Blend制作PathAnimation 1:选中Path转换为运动路径 2:选择目标对象 PathAnimation使用动态的Path PathAnimation动画在播放的时候,PahtGeo ...

  4. DIH

    DIH内存溢出: 在使用DIH时,容易报内存溢出错误.可以通过设置jvm大小来解决.设置方法如下: 在tomcat\bin\startup.bat 加入SET JAVA_OPTS=-Xms128m - ...

  5. Android(java)学习笔记62:继承Thread类创建线程类

    package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分哪些代码能够被线程执行,java提供了T ...

  6. Excel两行交换及两列交换,快速互换相邻表格数据的方法

    经常使用办公软件的人可能有遇到过需要将Excel相邻两行数据相互交换的情况,需要怎么弄才最方便呢?您还是像大家通常所做的那样先在Excel文件相应位置插入一个新的空白行然后在复制粘贴数据然后删除原来那 ...

  7. iOS - UI - UIPageControl

    1.UIPageControl 分页控件 //分页控件初始化 UIPageControl * pageControl = [[UIPageControl alloc] init]; //分页页数 pa ...

  8. Auto Layout 在iOS屏幕适配中的使用

    前几天在做iOS屏幕的适配,也就是让同样的UI控件的布局在不同屏幕的iOS设备上面都正确显示,storyBoard就无可避免的用到了Auto Layout.在这个过程中,我发现要熟练掌握Auto La ...

  9. 抽奖随机算法的技术探讨与C#实现

    一.模拟客户需求 1.1 客户A需求:要求每次都按照下图的概率随机,数量不限,每个用户只能抽一次,抽奖结果的分布与抽奖概率近似. 1.2 客户B需求:固定奖项10个,抽奖次数不限,每个用户只能抽一次, ...

  10. JavaScript中的getBoundingClientRect()方法

    这个方法返回一个矩形对象,包含四个属性:left.top.right和bottom.分别表示元素各边与页面上边和左边的距离. getBoundClientRect()方法返回的对象中和CSS中所定义不 ...