美文网首页
ECMAScript6学习(三)

ECMAScript6学习(三)

作者: nucky_lee | 来源:发表于2021-10-16 19:18 被阅读0次

    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.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。

    相关文章

      网友评论

          本文标题:ECMAScript6学习(三)

          本文链接:https://www.haomeiwen.com/subject/bycpoltx.html