zoukankan      html  css  js  c++  java
  • ES6|Object

    1.Object.is()—比较两个值是否相等

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

    区别:

    简单的说,两等号判等会在比较时自动进行类型转换,而三等号不会,如果类型不同,会直接返回false,而Object.is()则是在三等号的基础上,又特别处理了NaN、-0、+0,保证了-0和+0不再相同,但是要注意的是Object.is(NaN, NaN)会返回true

    2.Object.keys()—遍历对象,返回对象的key值

    //遍历对象
    const state ={ TaskId: "", proLevel: false }; const mutations = {}; console.log(Object.keys(state));//["TaskId","proLevel"]; Object.keys(state).forEach(item => { mutations[item] = (state,value) => { state[item] = value; } });
    //遍历字符串,返回的是下标
    var str = '123456';
    Object.keys(str); //[0,1,2,3,4,5]

    3.Object.values()—遍历对象,返回对象的value值

    var obj = {
         a:1,
        b:2,
        c:3  
    };
    console.log(Object.values(obj)); //[1,2,3]

    4.Object.assign()—对象合并或者说是浅复制(实则第一级属性深拷贝,第二级属性浅拷贝)

      Object.assign的第一个参数是目标对象,可以跟一或多个源对象作为参数,将源对象的所有可枚举([[emuerable]] === true)复制到目标对象。这种复制属于浅复制,复制对象时只是包含对该对象的引用。Object.assign(target, [source1, source2, ...])Object.assign的第一个参数是目标对象,可以跟一或多个源对象作为参数,将源对象的所有可枚举([[emuerable]] === true)复制到目标对象。这种复制属于浅复制,复制对象时只是包含对该对象的引用。Object.assign(target, [source1, source2, ...])

    let source1 = {a:1,b:1};
    let source2 = {a:2,c:2};
    let target = {b:0,c:0};
    let target1 = Object.assign(target,source1,source2);
    console.log(target); // { b: 1, c: 2, a: 2 }
    console.log(target1);// { b: 1, c: 2, a: 2 }

    // 一级属性深拷贝
    let obj = {a:5,b:4};
    let newObj = Object.assign({},obj);
    newObj.b = 7;
    console.log(obj); //{a:5,b:4}
    console.log(newObj); // {a:5, b:7}

    //二级属性浅拷贝
    let obj1 = {a: 5, b: {c: 4}};
    let obj2 = Object.assign({},obj1);
    obj2.b.c = 8;
    console.log(obj1); // {a:5,b:{c: 8}}
    console.log(obj2); // {a:5,b:{c:8}}
     

    5.Object.entries()—遍历对象,返回对象的key和value

    let arrTemp = ['Alice','Bob','Mary'];
    console.log(Object.entries(arrTemp));   //[["0", "Alice"],["1", "Bob"],["2", "Mary"]]
    let strTemp = {x:'Ali',y:'Bo',z:'Mar'};
    console.log(Object.entries(strTemp));//[["x", "Ali"],["y", "Bo"],["z", "Mar"]]

    6. Object.fromEntries() 方法把键值对列表转换为一个对象。

    const entries = new Map([
      ['foo', 'bar'],
      ['baz', 42]
    ]);
    
    const obj = Object.fromEntries(entries);
    
    console.log(obj);
    // expected output: Object { foo: "bar", baz: 42 }

    7.给对象设置属性

    const name = 'Allen';
    const age = 18;
    let person = {name,age};
    console.log(person); // {name:'Allen',age:18}

     8.Object.freeze() 方法可以冻结一个对象。

      一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。

    const obj = {
      prop: 42
    };
    
    Object.freeze(obj);
    
    obj.prop = 33;
    // Throws an error in strict mode
    
    console.log(obj.prop);
    // expected output: 42
  • 相关阅读:
    js截取字符串区分汉字字母代码
    List 去处自定义重复对象方法
    63. Unique Paths II
    62. Unique Paths
    388. Longest Absolute File Path
    41. First Missing Positive
    140. Word Break II
    139. Word Break
    239. Sliding Window Maximum
    5. Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/yangxiaoying/p/10277678.html
Copyright © 2011-2022 走看看