zoukankan      html  css  js  c++  java
  • ES6对象扩展

    1、属性简写

    ES6允许直接写入变量和函数,作为对象的属性和方法,这时,当对象属性名与属性值名(注意:此时属性值用一个变量代替)相同时可以简写;

    var name = 'zhangsan';
    var user = {name}; //等同于 var user = {name:name}

    2、方法简写

    //对象方法 ES5 写法
    var user = {
        sayName:function(){
            ... 
        }      
    }
    
    //ES6写法
    var user = {
        sayName(){
           ...
        }  
    }

    3、属性表达式

    ES6允许字面量定义对象时,可以把表达式放在括号内

    let flag = 'key';
    let obj = {[flag]:true,['a'+'bc':123]}; /// obj = {key:true,abc:123}

    4、对象方法的 name 属性,返回函数名

    const person = { sayName() {}};
    console.log(person.sayName.name);// "sayName"

    5、Object.is()  同值相等,与 ‘===’类似,与之不同之处在于:+0不等于-0,NaN等于自身

    console.log(Object.is(NaN,NaN));// true
     console.log(Object.is(+0,-0));// false

    6、Object. setPrototypeOf(obj,prototype) ;

    用来设置一个对象的prototype对象,返回参数对象本身。它是 ES6 正式推荐的设置 原型对象的方法。该方法等同如下写法:

    function (obj, proto) {
        obj.__proto__ = proto;
        return obj;
    }

    7、Object. getPrototypeOf(obj)

    用于读取一个对象的原型对象

    8、遍历对象

    ①Object.keys(obj),返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable)属性的键名

    var obj = {
        name:'zjl',
        age:19,
        gender:'男'
    }
    console.log(Object.keys(obj)) //[ 'name', 'age', 'gender' ]

    ②Object.values(obj),返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable) 属性的键值

    var obj = {
        name:'zjl',
        age:19,
        gender:'男'
    }
    console.log(Object.values(obj)) //[ 'zjl', 19, '男' ]

    ③Object. entries(obj)  返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历(enumerable) 属性的键值对数组。

    var obj = {
        name:'zjl',
        age:19,
        gender:'男'
    }
    console.log(Object.entries(obj))   //[ [ 'name', 'zjl' ], [ 'age', 19 ], [ 'gender', '男' ] ]

    9、Object.assign(),用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target )。

    Object.assign方法实行的是浅拷贝,而不是深拷贝。也就是说,如果源对象某个属 性的值是对象,那么目标对象拷贝得到的是这个对象的引用。

    let obj = {
        name:'hah',
        friends:[],
        count:{}
    }
    let obj3 = Object.assign({},obj);
    console.log(obj3 === obj);  //false
    console.log(obj3.friends === obj.friends); // true  浅复制
    console.log(obj3.count === obj.count)   //true  浅复制
  • 相关阅读:
    逐点分析,这样做Web端性能测试
    如何完成大数据测试-从功能测试角度分析
    自动化测试和手动测试利弊
    (一)SQL注入漏洞测试的方式总结
    如何设计一个完整的测试用例
    测试与开发、产品、上下级沟通、
    黑盒测试用例设计总结
    改变测试思路,你的性能测试才能更值钱!(下)
    20190923-03Linux时间日期类 000 011
    20190923-02Linux文件目录类 000 010
  • 原文地址:https://www.cnblogs.com/zjl-712/p/11443229.html
Copyright © 2011-2022 走看看