ES6 Essentials

随着javascript这门前端语言攻城掠地,觉得有必要深入了解一下这个语言了,为了大家更好的使用这门不是很好的语言,前端的大师们不断造轮子,随着es6的发布,es7的酝酿,这门语言越来越完备了。es6在es5的基础上,加入了大量的语法糖,现在总结一下自己在实际项目中es6的应用

对象字面量定义的变化

  • 字面量定义对象
  • 属性值的简写
  • 属性名为变量
  • 方法简写

箭头函数

  • 箭头函数格式
  • this作用域
  • 箭头函数的优点及使用场景
对象字面量定义

不管在es5还是es6中,javascript 的书写规范中也建议大家使用字面量对象来定义初始化javascript 对象。这个没有什么不同

var person = {
   name : 'zhangsan',
   age : 20
}
属性值的简写

在es5中定义一个对象,它的属性值是变量,我们会按以下代码

var name='bird man'
var age=20
var country=function(){
   return 'i am English'
}

var person={
  name : name,
  age : age,
  country : country
}

在es6中如果属性名与属性值的变量名相同,我们可以省略值的书写,它隐含在es6中,一旦习惯了语法,你会发现代码的可读性和开发效率会得到提升,上面的代码我们可以写成下面的形式

var name='bird man'
var age=20
var country=function(){
   return 'i am English'
}

var person={
  name,
  age,
  country
}
属性名是一个变量

有时我们定义一个对象时,基于变量或其他JavaScript表达式的名称的属性,而不是您预先知道的值。如下面的代码片段在ES5中。

var expertise = 'journalism'
var person = {
   name : 'zhangsan',
   age : 23
}
person[expertise] = {
  years: 5,
  interests: ['international', 'politics', 'internet']
}

ES6中的对象字面量不限于使用静态名称的声明。也可以使用动态属性名称,可以将任何表达式包装在方括号中,并将其用作属性名称。当达到声明时,将计算得到的表达式并将其用作属性名称。以下示例展示了我们刚才看到的代码片段如何在一个步骤中声明person对象,而不必求助于第二个语句,

var expertise = 'journalism'
var person = {
   name : 'zhangsan',
   age : 23,
  [expertise] = {
      years: 5,
     interests: ['international', 'politics', 'internet']
   }
}

与其同时我们上面讲过当属性值与变量名相同时,可以将属性值省略掉,上面的代码可以简写为

var expertise = 'journalism'
var journalism = {
    years: 5,
     interests: ['international', 'politics', 'internet']
}
var person = {
   name : 'zhangsan',
   age : 23,
  [expertise]
}

还有其他情况当我们的属性名是一个对象的属性,我们可以直接用吗,是的,我们没必要通过第三个语句来添加属性 grocery 到对象 groceries,如示例

var grocery = {
  id: 'bananas',
  name: 'Bananas',
  units: 6,
  price: 10,
  currency: 'USD'
}
var groceries = {
  [grocery.id]: grocery
}

我们写代码可能常常遇到这样的情况,可能是每当一个函数接收到一个参数,然后它应该使用它来构建一个对象。在ES5代码中,您需要分配一个声明对象字面量的变量,然后添加动态属性,然后返回对象。

function getEnvelope (type, description) {
  var envelope = {
    data: {}
  }
  envelope[type] = description
  return envelope
}

在es6代码中我们可以直接这样写,简单明了

function getEnvelope (type, description) {
  return {
    data: {},
    [type]: description
  }
}
方法定义

通常,您可以通过向对象添加属性来声明对象上的方法,如下一个代码段所示

var emitter ={
     var emit : function(){eventName}
 }

而在es5中就加入了对象的get ,set 方法,它们的写法与其他的定义普通方法有区别,如下代码

var reserves = 4
var spaceship = {
  get fuel () {
    return reserves
  },
  set fuel (value) {
    reserves = value
  }
}

从ES6开始,可以使用类似的语法在对象字面量上声明常规方法。唯一的区别是,你需要省略一个前缀,如get和set。同时提供了一种替代传统方法声明的简洁方法,您不需要使用function关键字。以下示例显示了使用ES6语法定义spaceship 。

var reserves = 4
var spaceship = {
  get fuel () {
    return reserves
  },
  set fuel (value) {
    reserves = value
  },
  deplete () {
    reserves = 0
  }
}
spaceship.fuel = 10
spaceship.deplete()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容

  • 一、ES6简介 ​ 历时将近6年的时间来制定的新 ECMAScript 标准 ECMAScript 6(亦称 ...
    一岁一枯荣_阅读 5,961评论 8 25
  • 三,字符串扩展 3.1 Unicode表示法 ES6 做出了改进,只要将码点放入大括号,就能正确解读该字符。有了这...
    eastbaby阅读 1,442评论 0 8
  • 本文内容:1、 什么是链表?2、 链表共分几类?3、 链表的 C 实现! 总表:《数据结构?》 工程代码 Gith...
    半纸渊阅读 39,564评论 0 54
  • 真的什么时候事情都没有你想的那么简单!尤其是对于双鱼座这就更要命啦!他们总是充斥着美好的幻想。思想里避免着不去想...
    Yt丶青虾阅读 123评论 0 1
  • 我和几个同事在一间合租的房间里 听说那天会有类似停水,或是停电之类的通知 我们围坐在沙发上干等着停电时间过去 可能...
    花京体验阅读 146评论 0 1