阅读 88

项目中常使用的Object方法

  • Object.assign():用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象

    // 复制一个对象
    const obj = {a: 1, b: 2};
    const obj1 = Object.assign({}, obj);
    console.log(obj1); //{a: 1, b: 2};
    obj.a = 2;
    console.log(obj1); //{a: 1, b: 2};
    
    // 针对深拷贝,需要使用其他的办法,因为Object.assign拷贝的是属性值
    // 加入源值是一个对象的引用,它仅仅会复制其引用值
    const obj = {a: 1, b: {c: 3}};
    const obj1 = Object.assign({}, obj);
    console.log(obj1); // {a: 1, b: {c: 3}}
    obj.b.c = 4
    coonsole.log(obj1); //{a: 1, b: {c: 4}}
    
    // 合并具有相同属性的对象
    const o1 = {a: 1, b: 1, c: 1};
    const o2 = {b: 2, c: 2};
    const o3 = {c: 3};
    const obj = Object.assign({}, o1, o2, o3);
    console.log(Obj): //{a: 1, b: 2, c: 3}
    //属性会被后续参数中具有相同属性的其他对象覆盖
    
    
    // 原始类型会被包装为对象
    // 原始类型会被包装,null 和 undefined 会被忽略。
    // 注意,只有字符串的包装对象才可能有自身可枚举属性。
    const o1 = {a: 1, b: 1, c: 1};
    const o2 = {a: 2, b: 2};
    const o3 = {c: 3};
    const o4 = "abc";
    
    const obj = Object.assign({}, o1, o2, o3, o4);
    console.log(obj) //{0: 'a', 1: 'b', 2: 'c', a: 2, b: 2, c: 3}
    
    const o5 = true;
    const obj = Object.assign({}, o1, o2, o3, o4, o5);
    console.log(obj); //{0: 'a', 1: 'b', 2: 'c', a: 2, b: 2, c: 3}复制代码
  • Object.keys():返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。

    const anObj = { 100: 'a', 2: 'b', 7: 'c' };
    console.log(anObj); //{2: 'b', 7: 'c', 100: 'a'}
    const array = Object.keys(anObj);
    console.log(array); // ['2', '7', '100']复制代码
  • Object.values():方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。

    const an_obj = { 100: 'a', 2: 'b', 7: 'c' };
    console.log(an_obj); //{2: 'b', 7: 'c', 100: 'a'}
    const array = Object.values(an_obj);
    console.log(array); // ['b', 'c', 'a']复制代码
  • Object.prototype.toString():检测对象类型

    Object.prototype.toString.call(new Date); //[object Date]复制代码
  • Object.prototype.hasOwnProperty(): 对象自身属性中是否具有指定的属性(也就是,是否有指定的键)

    o = new Object();
    o.hasOwnProperty('prop'); // 返回 false
    o.prop = 'exists';
    o.hasOwnProperty('prop'); // 返回 true
    delete o.prop;
    o.hasOwnProperty('prop'); // 返回 false


作者:梵墨
链接:https://juejin.cn/post/7024047960434409480


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐