当前位置: 首页 > news >正文

[译]ECMAScript 6:对象字面量中的属性值简写

原文:http://ariya.ofilabs.com/2013/02/es6-and-object-literal-property-value-shorthand.html


使用字面量语法来构建对象是每个JavaScript开发者都非常熟悉的,尤其还因为这种写法和JSON的语法非常相似.在对象子面量中,每个对象属性可以由一个键值对或者由一对getter/setter组成,但这样的写法可能会发生变化.ECMAScript 6中新增的一种语法糖称为对象字面量中的属性值简写(object literal property value shorthand).

考虑下面的ECMAScript 5代码片段:

function createMonster(name, power) {
  return { type: 'Monster', name: name, power: power };
}
function createWitch(name) {
  return { type: 'Witch', name: name };
}

如果使用了新的属性简写形式,则上面的代码可以写成:

function createMonster(name, power) {
  return { type: 'Monster', name, power };
}
function createWitch(name) {
  return { type: 'Witch', name };
}

正如你所看到的,能这样使用有一个前提条件,那就是属性的名称必须要和代指属性的值的变量的名称相同.这是最新的ECMAScript 6草案Rev 13中的Object Initialiser(section 11.1.5)语法的一种形式.当然,和ECMAScript 3的限制一样,你不能使用保留字来作为属性名(译者注:这句话不理解,ES3中可以使用关键字作为属性名呀,比如{function:1}).

现实世界中的代码该如何使用这种简写形式?在Backbone.js中,我们可以使用下面这种形式的代码来代替以前的旧代码:

route: function(route, callback) {
  this.handlers.unshift({route, callback});
},

为了提高可读性,我们需要在构建对象之前使用临时变量.另外一个例子,一段QUnit代码可以简写成这样:

test = new Test({nameHtml, testName, expected, async,
  callback,module: config.currentModule,
  moduleTestEnvironment: config.currentModuleTestEnvironment,
  stack: sourceFromStacktrace(2)
});

这样的简写形式并不会很大程度的改变你的代码,只会让你的代码更加易读!

相关文章:

  • BeagleBone 教学视屏 -- 第一季
  • SQL Server 负载均衡、集群的解决方案!
  • CLR只记不看笔记(二) 生成、打包、部署和管理应用程序及类型
  • Nagios(二)——Nagios 的基本安装
  • 老五的心经 byod环境安全问题:描述职责
  • spring service事务传播
  • ubuntu硬件信息,内存DDR详细信息
  • 使用LWA和Lync模拟外部测试无边缘单前端环境
  • 继承(一)——使用继承构件类
  • poj 2060
  • Android实战技巧:深入解析AsyncTask
  • yum 及手动编译rpm包
  • BI笔记之---增量方式处理多维数据集
  • 一号通
  • 异常以及异常处理框架探析
  • [deviceone开发]-do_Webview的基本示例
  • Android Studio:GIT提交项目到远程仓库
  • canvas 五子棋游戏
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Github访问慢解决办法
  • IOS评论框不贴底(ios12新bug)
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • Median of Two Sorted Arrays
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • OSS Web直传 (文件图片)
  • SpringBoot几种定时任务的实现方式
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 力扣(LeetCode)965
  • 普通函数和构造函数的区别
  • 如何编写一个可升级的智能合约
  • 小程序 setData 学问多
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​​​​​​​​​​​​​​Γ函数
  • ​Linux·i2c驱动架构​
  • ​如何防止网络攻击?
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • (C++17) std算法之执行策略 execution
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net 提取注释生成API文档 帮助文档
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .net程序集学习心得
  • .net开发时的诡异问题,button的onclick事件无效
  • .Net中ListT 泛型转成DataTable、DataSet
  • .NET中两种OCR方式对比
  • @angular/cli项目构建--Dynamic.Form
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @在php中起什么作用?
  • [1127]图形打印 sdutOJ
  • [17]JAVAEE-HTTP协议