es6

作者: 小雨不会 | 来源:发表于2020-05-07 17:07 被阅读0次
    1 let \cont
    2 结构
    let [a,b,c] = [1,2,3]
    let [a,[b,c]]=[1,[2,3]]
    let [a, ,c] =[1,2,3]
    let [a, b, c, d, e] = 'hello';
    
    3 Symbol
      表示独一无二的值,最大的用法是用来定义对象的唯一属性名除了 Number 、 String 、 Boolean 、 Objec t、 null 和 undefined ,还新增了 Symbol 。
      *Symbol.for()
       Symbol.for() 类似单例模式,首先会在全局搜索被登记的 Symbol 中是否有该字符串参数作为名称的 Symbol 值,如果有即返回该 Symbol 值,若没有则新建并返回一个以该字符串参数为名称的 Symbol 值,并登记在全局环境中供搜索。
    
    4 Map 与 Set
         /***Maps 和 Objects 的区别***/
         一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
          Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
          Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
          Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突。
          /**Set 对象**/
          Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
          Set 中的特殊值
          Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:
              +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
              undefined 与 undefined 是恒等的,所以不重复;
              NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。
    
    5 Reflect 与 Proxy
       Proxy 与 Reflect 是 ES6 为了操作对象引入的 API 。
       Proxy 可以对目标对象的读取、函数调用等操作进行拦截,然后进行操作处理。它不直接操作对象,而是像代理模式,通过对象的代理对象进行操作,在进行这些操作时,可以添加一些需要的额外操作。
       Reflect 可以用于获取目标对象的行为,它与 Object 类似,但是更易读,为操作对象提供了一种更优雅的方式。它的方法与 Proxy 是对应的。  
    
    6 字符串
        ·ES6 之前判断字符串是否包含子串,用 indexOf 方法,ES6 新增了子串的识别方法。
    
        ·includes():返回布尔值,判断是否找到参数字符串。
        ·startsWith():返回布尔值,判断参数字符串是否在原字符串的头部。
        ·endsWith():返回布尔值,判断参数字符串是否在原字符串的尾部。
        以上三个方法都可以接受两个参数,需要搜索的字符串,和可选的搜索起始位置索引。
          let string = "apple,banana,orange";
          string.includes("banana");     // true
          string.startsWith("apple");    // true
          string.endsWith("apple");      // false
          string.startsWith("banana",6)  // true
        ·repeat():返回新的字符串,表示将字符串重复指定次数返回如果参数是小数,向下取整
            console.log("Hello,".repeat(2));  // "Hello,Hello,"
        ·padStart:返回新的字符串,表示用参数字符串从头部(左侧)补全原字符串。
        ·padEnd:返回新的字符串,表示用参数字符串从尾部(右侧)补全原字符串。
            console.log("h".padStart(5,"o"));  // "ooooh"
            console.log("h".padEnd(5,"o"));    // "hoooo"
            console.log("h".padStart(5));      // "    h"
          如果指定的长度小于或者等于原字符串的长度,则返回原字符串: 
          如果原字符串加上补全字符串长度大于指定长度,则截去超出位数的补全字符串:
    
        变量名写在 ${} 中,${} 中可以放入 JavaScript 表达式。
        let name = "Mike";
        let age = 27;
        let info = `My Name is ${name},I am ${age+1} years old next year.`
        console.log(info);
      // My Name is Mike,I am 28 years old next year.
    
    7 数值
        ·二进制表示法新写法: 前缀 0b 或 0B 。
            console.log(0b11 === 3); // true
            console.log(0B11 === 3); // true
        ·八进制表示法新写法: 前缀 0o 或 0O 。
             console.log(0o11 === 9); // true
             console.log(0O11 === 9); // true
        ·Number.EPSILON
              Number.EPSILON 属性表示 1 与大于 1 的最小浮点数之间的差它的值接近于 2.2204460492503130808472633361816E-16,或者 2-52。
        ·Number.isFinite()
              用于检查一个数值是否为有限的( finite ),即不是 Infinity
        ·Number.parseInt()
              用于将给定字符串转化为指定进制的整数。
              // 不指定进制时默认为 10 进制
              Number.parseInt('12.34'); // 12
              // 指定进制
              Number.parseInt('0011',2); // 3
        ·Math.cbrt()
              用于计算一个数的立方根。
              Math.cbrt(1);  // 1
        ·Math.imul()
              两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数。
              // 大多数情况下,结果与 a * b 相同 
              Math.imul(1, 2);   // 2
        ·Math.hypot()
              用于计算所有参数的平方和的平方根。
              Math.hypot(3, 4); // 5
        ·Math.trunc()
              用于返回数字的整数部分。
              Math.trunc(12.3); // 12
        ·Math.sign()
              判断数字的符号(正、负、0)。
        ·Math.expm1()对数
              用于计算 e 的 x 次方减 1 的结果,即 Math.exp(x) - 1 。
              Math.expm1(1);  // 1.718281828459045
        ·Math.log10(x)
              用于计算以 10 为底的 x 的对数。
              Math.log10(1);   // 0
        ·Math.log2()
              用于计算 2 为底的 x 的对数。
               Math.log2(1);   // 0
        ·Math.sinh(x): 用于计算双曲正弦。
        ·Math.cosh(x): 用于计算双曲余弦。
        ·Math.tanh(x): 用于计算双曲正切。
        ·Math.asinh(x): 用于计算反双曲正弦。
        ·Math.acosh(x): 用于计算反双曲余弦。
        ·Math.atanh(x): 用于计算反双曲正切。
    
    8 数组
        ·Array.of()
          将参数中所有值作为元素形成数组。
          console.log(Array.of(1, 2, 3, 4)); // [1, 2, 3, 4]
        ·Array.from()
           将类数组对象或可迭代对象转化为数组。
           // 参数为数组,返回与原数组一样的数组
           console.log(Array.from([1, 2])); // [1, 2]
        ·find()
            查找数组中符合条件的元素,若有多个符合条件的元素,则返回第一个元素。
            let arr = Array.of(1, 2, 3, 4);
            console.log(arr.find(item => item > 2)); // 3
        ·findIndex()
            查找数组中符合条件的元素索引,若有多个符合条件的元素,则返回第一个元素索引。
            let arr = Array.of(1, 2, 1, 3);
            // 参数1:回调函数
            // 参数2(可选):指定回调函数中的 this 值
            console.log(arr.findIndex(item => item = 1)); // 
        ·fill()
             将一定范围索引的数组元素内容填充为单个指定的值。
             let arr = Array.of(1, 2, 3, 4);
              // 参数1:用来填充的值
              // 参数2:被填充的起始索引
              // 参数3(可选):被填充的结束索引,默认为数组末尾
             console.log(arr.fill(0,1,2)); // [1, 0, 3, 4]
        ·copyWithin()
              将一定范围索引的数组元素修改为此数组另一指定范围索引的元素。
              // 参数1:被修改的起始索引
              // 参数2:被用来覆盖的数据的起始索引
              // 参数3(可选):被用来覆盖的数据的结束索引,默认为数组末尾
              console.log([1, 2, 3, 4].copyWithin(0,2,4)); // [3, 4, 3, 4]
        ·includes()
            数组是否包含指定值。
            注意:与 Set 和 Map 的 has 方法区分;Set 的 has 方法用于查找值;Map 的 has 方法用于查找键名。
        ·flat()
              console.log([1 ,[2, 3]].flat()); // [1, 2, 3]
              // 指定转换的嵌套层数
              console.log([1, [2, [3, [4, 5]]]].flat(2)); // [1, 2, 3, [4, 5]]

    相关文章

      网友评论

          本文标题:es6

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