美文网首页
ES6新属性

ES6新属性

作者: 关耳木南 | 来源:发表于2021-12-15 10:52 被阅读0次
  <script>
        var a = [];
        for(let i = 0; i < 10; i++){
            a[i] = function(){
                console.log( i );
            }
        }
        a[0]();
        a[6]();

        function fn(){
            let a = '第一层';
            if(true){
                let a = '第二层';
                console.log( a );
            }
            console.log( a );
        }
        fn()
        // let [z, x, c] = [10, 20, 30];
        // console.log(z)

        let [ , , third] = ['foo', 'bar', 'baz'];
        console.log(third)
        let [x, , y] = [1, 2, 3]
        console.log(x)
        console.log(y)
        let [x1, y1, ...z1] = ['a'];
        console.log(x1)
        console.log(y1)//解构不成功,变量的值就等于undefined
        console.log(z1)
        // -----------
        // Object.assign方法实行的是浅拷贝,而不是深拷贝。
        //如果源对象某个属性的值是对象,那么目标对象拷贝得到
        //的是这个对象的引用
        const obj1 = {a:{b:1}};
        const obj2 = Object.assign({}, obj1);
        console.log( obj2 )
        obj1.a.b = 2;
        console.log( obj2.a.b )
        console.log(obj1)
        // Object.assign 对于嵌套对象遇到同名属性,Object.assign的处理方法是替换,而不是添加
        // const target = {a:{b:'c',d:'e'}}
        // const source = {a:{b:'hello'}}
        // Object.assign(target,source)
        // console.log(target)//a: {b: 'hello'}
        // console.log(source)
        const target = {a:{b:'c',d:'e'},f:'m'}
        const source = {a:{b:'hello'}}
        Object.assign(target,source)
        console.log(target)//a: {b: 'hello'},f:'m'
        console.log(source)//{a:{b:'hello'}}
        console.log(Object)
        //Object.assign 可以用来处理数组,但是会把数组视为对象
        const arrAssign = Object.assign([1, 2, 3], [4, 5])
        //上面代码Object.assign把数组视为属性名为0、1、2的对象,
        //因此源数组的0号属性4覆盖了目标数组的0号属性1
        console.log(arrAssign)//[4, 5, 3]
        /* ES6新方法
            Object.keys 返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历属性的键名
            Object.values
            Object.entries
        */
    // -----
    //    var obj = {foo:'bar', baz:42};
    //    console.log(Object.keys(obj))//['foo', 'baz']
    // ----

    let {keys, value, entries} = Object;
    let obj = {a:1, b:2, c:3};
    for(let key of keys(obj)){
        console.log(key)
    }
    /*
        Object.fromEntries()该方法是Object.entries()的逆操作,用于将
        一个键值对数组转为对象,该方法的主要目的,是将键值对的数据结构还原为
        对象,因此特别适合将Map结构转为对象。
    */ 
   const OF = Object.fromEntries([
       ['foo', 'baz'],
       ['baz', 42]
   ])
   console.log(OF)//{foo: 'baz', baz: 42}

   const entries2 = new Map([
       ['foo', 'baz'],
       ['baz', 42]
   ])
   const OF1 = Object.fromEntries( entries2 );
   console.log( OF1 )//{foo: 'baz', baz: 42}
    </script>

相关文章

  • ES6新属性

  • 关于es6新属性yield

    关于es6新属性yield yield是Generator函数中中断函数返回的一个属性。Generator函数即一...

  • props,state

    props:属性,单向的,属性多的时候,可以传递一个对象,语法为{...xx},这是es6的新特性。 state:...

  • Class语法

    ES6前 类的实例 getter和setter 属性表达式 Class表达式 注意点 静态方法 实例属性新写法 静...

  • 数组去重与深浅拷贝

    数组去重 1, 数组去重 ES6的set 方法 对象属性存在的特性,如果没有该属性则存入新数组 indexof 方...

  • es6 class实现静态属性、私有属性、方法

    1.class实现静态属性 参考:ES6 class 静态属性和私有方法 es6中实现了静态方法,但是没有静态属性...

  • 用Decorator优化React

    什么是decorator decorator是ES6的一个新特性,可以修改class的属性 通过decorator...

  • let 和 const 命令

    let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...

  • let 和 const 命令

    let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新...

  • ECMAScript对象扩展

    属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法 ES6允许在对象之中,只写属性名,不写属性值...

网友评论

      本文标题:ES6新属性

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