javascript中对象字面量与数组字面量

第一部分 

  我们知道JavaScript中的数据类型有基本数据类型和引用类型,其中Object类型就是非常常用的类型。那么如果创建一个Object类型的实例呢?下面我介绍两种方法:

   第一:构造函数法。

    

var person=new Object();
person.name="zhuzhenwei";
person.age=20;

  这里Object()实际上是默认的构造函数,显然,为满足需要,我们可以通过后两条语句添加新的属性。JavaScript高级程序设计第3版83页介绍说,该构造函数为新对象定义了默认的属性和方法。但,这是真的吗?我们可以验证一下。因为for-in语句可以遍历对象中所有的属性,因此我们可用它来验证:

var person=new Object();
for(var propName in person){
console.log(propName);
}

  如果Object构造函数有默认属性,那么我们在控制台上应该是可以看到的,但实际上:

什么都没有?!

也就是说Object本身是不具有任何默认的属性的。

因为如果我们添上后面两句:

var person=new Object();
person.name="zhuzhenwei";
person.age=20;
for(var propName in person){
  console.log(propName);
}

 我们就可以得到如下:

即此时person就有了两个属性,也就是说,Object函数自身确实没有默认的属性

但是,真的是这样吗?javascript高级程序设计会出现这样的错误吗?答案是不会~


因为在这里使用for-in语句是不合适的,不能通过它枚举初object的所有属性。它只适用于window之类的对象,这里我们最好使用in操作符。因为object通过测试是不可枚举的。 alert(object.propertyisenumerable("prototype"));//false

var person=new Object();
console.log("toString" in person);//true
console.log("valueOf" in person);//true
console.log("constructor" in person);//true

  也就是说Object至少是有上述属性和方法的。

  第二:对象字面量表示法

 

var person={
name:"zhuzhenwei",
age:18
};

    这里也创建了一个对象实例,同样通过for-in语句,我们可以验证其也只有name和age两个属性,且在通过对象字面量表示法定义对象时,实际上不会调用Object构造函数。

    关于对象字面量有以下一点需要注意的地方:

  • 在末尾需加分号;表示结束。
  • 在一个属性定义之后用逗号分隔,最后一个属性不需要
  • 属性名可以加双引号,好处是我们可以包含错误的字符。并使用方括号表示法来访问对象的属性。

      

比如:

var person=new Object();
person.age age=18;
console.log(person.age age);

这时,由于属性名中包含了空格,因此得到的结果一定是 语法错误。

然而:

var person={
"age age":18
};
console.log(person["age age"]);

这时候我们就可以得到正确的答案了。

最后,实际上对象字面量还可以作为参数传递,大家有兴趣可以去了解,这里就不介绍了~

第二部分:

什么使数组字面量呢?对象字面量用于创建对象,数组字面量即用于创建数组。创建数组有两种方法。

  第一:构造函数法.

  

var arr=new Array();

  第二:数组字面量法

var arr=["zhu","zhen","wei"];

  因为所有的引用类型都是继承自Object,因此Array也是继承自object的,并在继承的基础上添加了自己的属性和方法。

var arr=new Array();
console.log("toString" in arr);//true
console.log("valueOf" in arr);//true
console.log("length" in arr);//true

  You got a dream, you gotta protect it.

如果你有一个梦想,就必须捍卫它!

javascript中对象字面量的理解的更多相关文章

  1. javascript中对象字面量与数组字面量

    第一部分 我们知道JavaScript中的数据类型有基本数据类型和引用类型,其中Object类型就是非常常用的类型.那么如果创建一个Object类型的实例呢?下面我介绍两种方法: 第一:构造函数法. ...

  2. js中对象字面量

    一.对象字面量语法 var person={ name:'小王', age:18, _pri:233 } 成员名称的单引号不是必须的 最后一个成员结尾不要用逗号,不然在某些浏览器中会抛出错误 成员名相 ...

  3. javascript中的对象字面量为啥这么酷

    原文链接 : Why object literals in JavaScript are cool 原文作者 : Dmitri Pavlutin 译者 : neal1991 个人主页:http://n ...

  4. javaScript高级教程(九) ------javascript对象字面量--------困扰已久的问题

    在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字面量(string literal ),JavaScript也不例外. ...

  5. JSON字符串和Javascript对象字面量

    JSON字符串和Javascript对象字面量 JSON是基于Javascript语法的一个子集而创建的,特别是对象和数组字面量语法. 正是由于JSON的这种特殊来历,导致很多Javascript程序 ...

  6. JavaScript 对象字面量

    JavaScript 对象字面量   JavaScript 对象字面量 在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字 ...

  7. Java常量,变量,对象(字面量)在JVM内存中的存储位置

    Java常量,变量,对象(字面量)在JVM内存中的存储位置 2019-02-26 18:13:09 HD243608836 阅读数 540  收藏 更多 分类专栏: JAVA jvm   苦苦研究了快 ...

  8. JavaScript对象字面量

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  9. es6 中增强的对象字面量

    http://www.cnblogs.com/Wayou/p/es6_new_features.html 对象字面量被增强了,写法更加简洁与灵活,同时在定义对象的时候能够做的事情更多了.具体表现在: ...

随机推荐

  1. ASP.NET Web API(三):安全验证之使用摘要认证(digest authentication)

    在前一篇文章中,主要讨论了使用HTTP基本认证的方法,因为HTTP基本认证的方式决定了它在安全性方面存在很大的问题,所以接下来看看另一种验证的方式:digest authentication,即摘要认 ...

  2. MVC————扩展方法MvcHtmlString

    使用前: public static class MyHtmlHelper { public static string GroupPage(this HtmlHelper helper) { str ...

  3. [转]run for a girl

    上了四个星期决不情愿的自习,终于找到了她上自习的规律, 每个星期五肯定在主教楼525第三排中间,其实第一眼看见她已经喜欢她了,在她周围坐了十天之后更觉得她是我喜欢的那种女孩, (不是每天都能见到她), ...

  4. JNI系列——PassData

    1.在工程目录下创建xxx.jni包并在该包下创建JNI类 2.在JNI类中声明所有的本地方法,并加载库 3.在MainActivity类中实例化JNI对象,并调用其方法 4.通过Javah生成的方法 ...

  5. oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。

    来源于:http://www.cnblogs.com/wangfg/p/5110831.html 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; s ...

  6. 延时程序执行Qt

    有时候为了让程序暂停一下,不让它一直跑下去,可以使它进入循环结构中! 例如: #include <QCoreApplication> #include <qdebug.h> # ...

  7. Java对象的访问

    对象访问在Java语言中无处不在,即使最简单的访问也涉及Java栈.Java堆.方法区这三个重要的内存区域中. 例:Object obj = new Object(); Object obj     ...

  8. Query DSL for elasticsearch Query

    Query DSL Query DSL (资料来自: http://www.elasticsearch.cn/guide/reference/query-dsl/) http://elasticsea ...

  9. 关于二叉排序树 BST

    #include<stdio.h> #include<stdlib.h> typedef struct node { double w; struct node *l,*r; ...

  10. 强连通 HDU 1269

    n点m边 求是否能从任意a->b b->a 强连通分量等于1 #include<stdio.h> #include<algorithm> #include<s ...