ECMAScript6学习(三)

ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现。

1、Symbol

新增的第六种原始数据类型;表示独一无二的值;解决对象属性名同名冲突。

前五种原始数据类型分别是:undefined、null、string、number、boolean
还有一个object对象类型

Symbol('a') == Symbol('a')  // false
Symbol.for('a') == Symbol.for('a')   // true
应用:

1、给对象添加独一无二的属性;
2、消除魔术字符串

 switch (shape ) {
    case 'Triangle': // 魔术字符串 
      break;
    /* ... more code ... */
  }
可以定义:
const shapeType = {
  triangle: Symbol()
};
case shapeType.triangle: // 使用symbol属性名代替字符串字面值,提高代码可读性和可维护性
Symbol.iterator

对象默认没有遍历器,不可遍历。可以添加Symbol.iterator使其可遍历
对象的Symbol.iterator属性,指向该对象的默认遍历器方法。

let obj = {x:1,y:2,z:3}
obj[Symbol.iterator] = function *() {
for (const key of Object.keys(obj)) {
yield obj[key]
}
}
[...obj] // [1, 2, 3]

2、Generator--异步编程解决方案

异步任务封装
var fetch = require('node-fetch');
function* gen(){
  var url = 'https://api.github.com/users/github';
  var result = yield fetch(url);
  console.log(result.bio);}

3、Proxy拦截器

在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截
var proxy = new Proxy(target, handler);
target参数表示所要拦截的目标对象,handler参数也是一个对象,用来定制拦截行为。
常用拦截:get、set、apply(拦截函数的调用)、constructor(拦截new 构造函数)

4、新增函数方法

Array.from()
只要是部署了Iterator接口的数据结构,Array.from都能将其转为数组。
代替了Array.prototype.slice.call / [].slice.call

Array.protptype.includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容