zoukankan      html  css  js  c++  java
  • 关于es6中对象的扩展

    1.Object.is()

    es5比较两个值是否相等,只有两个运算符,相等(==) 和 严格相等(===),他们都有缺点,前者会自动转换数据类型,后者的NaN不等于自身,以及+0 等于 -0。es6提出了Object.is()方法,它用来比较两个值是否相等,与严格运算符(===)的行为基本一致 

    Object.is('foo', 'foo')  //false     Object.is({} , {}) //false  

    不同之处只有两个, Object.is(+0, -0) // true  Object.is(NaN , NaN) // true

    2.Object.assign()

    Object.assign 方法用于将源对象的所有可枚举属性复制到目标对象

    var target = { a: 1}
    
    var source = { b:2 }
    var source2 = { c: 3}
    
    Object.assign(target , source, source2)
    
    target //  { a: 1, b: 2, c:3 } 
    // 第一个参数是目标对象,后面的是源对象

    注意:如果目标对象和源对象有重名属性, 或多个源对象有同名属性,则后面的属性会覆盖前面的属性

    如果只有一个参数,Object.assign会直接返回该参数

    var obj = { a: 1}
    Object.assign(obj) === obj

    如果该参数不是对象,则会先转成对象,然后返回

    typeof Object.assign(2) // 'object'

    由于null 和 undefined 无法转成对象,所以如果将他们作为参数,就会报错, 如果他们不再首参数,便不会报错,会跳过他们;其他类型的值不再首参数也不会报错,但是除了,字符串会以数组的形式复制到目标对象,其他值不会产生效果。

    var v1 = 'abc'
    var v2 = true
    var v3 = 10
    var obj = Object.assign({}, v1, v2, v3)
    obj // { "0": "a", "1": 'b", "2": "c"}

    注意:Object.assign 是浅拷贝

    常见用途: 为对象添加属性、克隆对象、为对象添加方法、为属性制定默认值

    3.Object.keys()

    es5引入了Object.keys方法,返回一个数组,成员是参数对象自身(不含继承)所有可遍历(enumerable)属性的键名。

    var obj = { foo: 'bar', baz: 42}
    Object.keys(obj) // ["foo", "baz"]

    4. Object.values()方法返回一个数组,成员是参数对象自身的所有(不含继承)可遍历

    var obj = { foo: 'bar', baz: 42}
    Object.values(obj) // ["bar", 42]

    5.Object.entries

    Object.entries返回一个数组成员是参数对象自身所有可遍历属性的键值对数组

    var obj = { foo: 'bar', baz: 42}
    Object.entries(obj) // [ ["foo", "bar"], ["baz", 42]]
  • 相关阅读:
    [Testing] Config jest to test Javascript Application -- Part 2
    java实现从实体到SQL语句的转换(二)
    Android无法访问本地服务器(localhost)的解决方案
    虚拟机内存调的过大导致无法恢复也无法关闭解决办法
    python模块介绍- multi-mechanize 性能测试工具
    Android Cocos2d-x游戏集成友盟社会化组件分享功能
    nodejs--express开发个人博客(-)
    poj1887 Testing the CATCHER
    [置顶] 假如生活欺骗了你
    【读书笔记】《摇摆》奥瑞·布莱福曼等
  • 原文地址:https://www.cnblogs.com/czy960731/p/9725243.html
Copyright © 2011-2022 走看看