• ES6——对象


    • 属性简洁表示法

      const age = 12
      const name = "Amy"
      const person = {age,name}
      
    • 方法名简写

      const person = {
          SayHi(){
              console.log("Hi")
          }
          //等同于
          //SayHi:function(){
             // console.log("Hi")
          //}
      }
      
      • Generator 函数

        • 简写

          const person = {
              * myGenerator(){
                  yield 'hello'
              }
          }
          
        • 概念

          异步编程解决方案 包含多个内部状态的状态机 返回一个遍历器对象

          function 关键字后面,函数名前面有一个符号 "*"

          内部用 yield 生产不同内部状态

          遍历器对象有个 next 方法,执行 next 会返回一个对象,对象上有两个属性 value:是yield 关键字后面表达式的值。 done:没有遇到 return 语句为 true ,遇到之后为 false

        • 基本使用

          function *helloGenerator(){
              yield 'hello'
              yield 'world'
              return 'ending'
          }
          var hw = helloGenerator()
          console.log(hw.next())	//{done: false, value: 'hello'}
          console.log(hw.next())	//{done: false, value: 'world'}
          console.log(hw.next())	//{done: true, value: 'ending'}
          console.log(hw.next())	//{done: true, value: undefined}
          console.log(hw.next())	//{done: true, value: undefined}
          
    • 属性名表达式

      const obj = {
          ["he"+"llo"](){			//表达式一定要放在方框内
              return 'Hi'
          }
      }
      obj.hello()		//"Hi"
      

      :属性简洁表示法不能与属性表达式同时使用

    • 对象拓展运算符

      取出参数对象所有可遍历属性拷贝到当前对象

      let person = {name:"Amy", age: 15}
      let someone = {...person}
      someone		//{name: "Amy", age: 15}
      

      也可用于合并

      let age = {age: 15}
      let name = {name: "Tom"}
      let person = {...age, ...name}
      person		//{age: 15, name: 'Tom'}
      

      自定义属性和拓展运算符对象里面的属性的时候,拓展运算符优先级 > 自定义属性

      如果拓展运算符是空对象或 null, undefined 则使用自定义属性

    • 对象新方法

      • Object.assign(target,source,...)

        将源对象所有可枚举属性复制到目标对象中

        let target = {a: 1}
        let obj2 = {b: 2}
        let obj3 = {c: 3}
        Object.assign(target,obj2,obj3)
        target	//{a: 1, b:2, c:3}
        
        1. 如果一个目标对象和源对象有同名属性,后面属性覆盖前面属性
        2. 如果参数不是对象则转化为对象返回
        3. assign 是浅拷贝
      • Object.is(value1, value2)

        比较两个值是否严格相等,与(===)相似

        • 与(===)的不同

          NaN === NaN	//false
          Object.is(NaN,NaN)	//true
          
          +0 === -0	//true
          Object.is(+0,-0)	//false
          
  • 相关阅读:
    js 中的 EventLoop
    线程的并发工具类
    xpath获取某个节点下的全部字节点的文本
    2020中国 .NET开发者大会精彩回顾:葡萄城高性能表格技术解读
    .NET 控件集 ComponentOne V2020.0 Update3 发布,正式支持 .NET 5
    log4net配置
    TP5.1 爬虫
    pip下载慢
    TP5.1 二维码生成
    composer插件集合
  • 原文地址:https://www.cnblogs.com/angle-yan/p/13385241.html
Copyright © 2020-2023  润新知