使用字面量,比new更加有效
参考原文:http://www.cnblogs.com/yxf2011/archive/2012/04/01/2428225.html
http://www.cnblogs.com/mushishi/p/5811743.html
在Javascript中,创建对象的方式包括两种:对象字面量和使用new 表达式,对象字面量是一种灵活方便的是些方式,例如:
var o1 = {
p:'I'm in Object literal',
alertP: function() {
alert(this.p);
}
}
这样,对象字面量创建了一个对象o1,它具有一个成员变量p以及一个成员方法alertP,这种写法不需要定义构造函数,这样写的缺点是,每创建一个新的对象都需要写出完整的定语语句,像上面代码一样,不便于创建大量相同类型的对象,不便使用继承等高级特性
什么是字面量?
在许多编程语言中,字面量是一种表示值的记法,
例如
var str = 'Hello World'
// str是变量名
// 'Hello World'就是字符串字面量
又如:100、true、false、null,他们分别表示整数、两个布尔值、一个对象。
JavaScript中,还支持对象、数组字面量。如下所示
创建对象
// 不用字面量,创建对象的不简洁做法
var customer = new Object();
customer.firstName = 'John';
customer.lastName= 'D'; // 首选方法,使用对象字面量,创建对象,效果等同上面三段代码
var customer = { firstName: 'John', 'lastName: 'D' }
创建数组(也是对象)
// 不用字面量,创建对象的不简洁做法
var arr= new Array();
arr.push(1, 2, 3, 4, 5); // 首选方法,使用数组字面量,效果等同上面三段代码
var arr = [ 1, 2, 3, 4, 5 ]
从上面的例子可以看出,对象字面量与数组字面量中可以包含其他字面量。
举一个更复杂的例子
var team = {
name: '', // 字符串字面量,''表示空字符串
members: [], // 数组字面量,[]表示空数组
count: function(){ return members.length } // count属性的值也是字面量,即函数字面量
}
字面量为什么比new Object高效?
其实我们平常都是已对象字面量来初始化js变量的,即var obj = {};,但是为什么字面量的方法创建对象要比var obj = new Object();高效,下面直接在浏览器中做一个实验
我们可以用console.time()和console.timeEnd()这两个方法来测试脚本程序执行所消耗的时间。
console.time方法是开始计算时间,console.timeEnd是停止计时,输出脚本执行的时间。

从上面代码可以看到,使用字面量创建对象的效率会更加高!
网上的解释如下:
{}是字面量,可以立即求值,而new Object()本质上是方法(只不过这个方法是内置的)调用, 既然是方法调用,就涉及到在proto链中遍历该方法,当找到该方法后,又会生产方法调用必须的 堆栈信息,方法调用结束后,还要释放该堆栈
总结
1.字面量分类:
1)字符串字面量(string literal)
2)数组字面量(array literal)
3)函数字面量(functionliteral)
4)对象字面量(objectliteral)
2.字面量,使得代码更加简洁并且高效。
-----完-----
使用字面量,比new更加有效的更多相关文章
- Javascript正则构造函数与正则表达字面量&&常用正则表达式
本文不讨论正则表达式入门,即如何使用正则匹配.讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式. Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达 ...
- es6 中增强的对象字面量
http://www.cnblogs.com/Wayou/p/es6_new_features.html 对象字面量被增强了,写法更加简洁与灵活,同时在定义对象的时候能够做的事情更多了.具体表现在: ...
- [译]ES6新特性:八进制和二进制整数字面量
原文:http://whereswalden.com/2013/08/12/micro-feature-from-es6-now-in-firefox-aurora-and-nightly-binar ...
- JavaScript对象的理解 及 字面量对象与数组的关系
JavaScript的简单类型包括 数字.字符串.布尔值.null值.undefined值. 其他的值都是对象.对象是可变的键控集合.数组.函数.正则表达式都是对象. 对象是属性的容器,属性都是名字和 ...
- iOS @@创建NSURL的字面量
@@ 是创建 NSURL 的字面量的绝佳方法(例如:@@"http://example.com")
- java基本数据类型的字面量
java的基本数据类型一共有8种.其中:(每种类型后面列出了java中的该类型的字面量) 四种整型: int 4字节: 12 +12 -12 077 0xFF 0b101(JDK7中支持的二 ...
- Javascript模式(第三章字面量与构造函数)------读书笔记
一 对象字面量 1.1对象字面量的语法 1,对象键值对哈希表,在其他的编程语言中称之为“关联数组”, 2 键值对里面的值,可以是原始类型也可以是其他类型的对象,称之为属性,函数称之为方法 3 自定义对 ...
- Swift开发第七篇——字面量转换&下标
本篇分为两部分: 一.Swift 中的字面量转换 二.Swift 中的下标 一.Swift 中的字面量转换 所谓字面量就是指像特定的数字,字符串或者是布尔值这样能够直接了当地指出自己的类型并未变量进行 ...
- javascript中对象字面量的理解
javascript中对象字面量与数组字面量 第一部分 我们知道JavaScript中的数据类型有基本数据类型和引用类型,其中Object类型就是非常常用的类型.那么如果创建一个Object类型的实例 ...
- Effective Objective-C 2.0 — 第三条:多用字面量语法,少用与之等价的方法
第三条:多用字面量语法,少用与之等价的方法 几个类:NSString NSNumber NSArray NSDictionary 字面量语法是一种语法糖(syntactic sugar) NSS ...
随机推荐
- php数组排序sort
php的数组分为数字索引型的数组,和关键字索引的数组.如果是数字索引的,可以这样使用:$names = ['Tom', 'Rocco','amiona'];sort($names);sort()函数只 ...
- POI导入和导出Excel总结
POI导入和导出Excel总结 POI使用总结 1.POI读取Excel 打开工作簿的方式有以下两种简单的应用,POI读取和输出工作簿文件都可以通过以下两种方式来声明: //通过输入流的方式打开本 ...
- Day12 (黑客成长日记) 函数
一.递归函数: 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. #计算阶乘: def fact(n): if n == 1: return 1 return n ...
- 解决ssh连接慢,挂起在SSH2_MSG_SERVICE_ACCEPT信息之后很久的问题
问题现象:无论是ssh 还是 scp 都会连接很久才提示输认证信息(注意:是连接慢) 如本机IP:192.168.18.208 (Hostname: ThinkPad) 目标主机:192.168.18 ...
- post文件下载
this.$http({ method: 'post', url: '/file/download', responseType: 'blob', data: JSON.stringify(this. ...
- struts2 升级至2.3.32时访问页面报错 File "/struts-tags" not found
Apache struts是美国阿帕奇(Apache)软件基金会负责维护的一个开源项目,是一套用于创建企业级Java Web 应用的开源MVC框架,主要提供两个版本框架产品: struts 1和str ...
- python猜数字游戏console版本
加入python学习小组后的第一次作业,python GUI写猜数字游戏.由于加班比较多,第一步先实现console版本,下一步再实现GUI版本. 虽然猜数字游戏是个小游戏,但是涉及到的基础知识点还是 ...
- OC中NSString的使用、字符串的使用
字符串作为OC语言的基本对象类型,被我们在各种地方广泛使用,因此熟悉掌握字符串的属性和方法,是OC必不可少的基础之一. 字符串分为可变字符串(NSMutableString)和不可变字符串(NSStr ...
- RabbitMQ 分发到多Consumer(Publish/Subscribe)
上篇文章中,我们把每个Message都是deliver到某个Consumer.在这篇文章中,我们将会将同一个Message deliver到多个Consumer中.这个模式也被成为 "pub ...
- unigui+fastReport实现web打印方案
近日单位需要用到会议通知单的打印功能,故引出篇. unigui是delphi环境下快速开发web应用的优秀工具,不再赘述,下面直接记录使用搭配使用,基本逻辑就是: unigui实现数据录入和浏览的we ...