静态方法 Object不是对象是函数

Object.is

判断两个数据是否相等,基本上跟严格相等(===)是一致的 除啦
NaN 与 NaN相等, 在严格相等下是不相等的
+0与-0 不相等, 在严格相等下是相等的

  1. console.log(NaN === NaN); // false
  2. console.log(+0 === -0); // true
  3. console.log(Object.is(NaN, NaN)) //true
  4. console.log(Object.is(+0, -0)) //false

Object.assign

对象混合
具体解释看笔记中的对象混合

  1. const obj1 = {
  2. a: 123,
  3. b: 456,
  4. c: "abc"
  5. }
  6. const obj2 = {
  7. a: 789,
  8. d: "kkk"
  9. }
  10. const obj = Object.assign({}, obj1, obj2);
  11. console.log(obj)

Object.getOwnPropertyNames 的枚举顺序

Object.getOwnPropertyNames方法之前就存在,只不过,官方没有明确要求,对属性的顺序如何排序,如何排序,完全由浏览器厂商决定。

ES6规定了该方法返回的数组的排序方式如下:

  • 先排数字,并按照升序排序
    - 再排其他,按照书写顺序排序
    1. const obj = {
    2. d: 1,
    3. b: 2,
    4. a: 3,
    5. 0: 6,
    6. 5: 2,
    7. 4: 1
    8. }
    9. const props = Object.getOwnPropertyNames(obj)
    10. console.log(props)

    Object.setPrototypeOf

    该函数用于设置某个对象的隐式原型
    比如: Object.setPrototypeOf(obj1, obj2),
    相当于: obj1.proto = obj2 ```javascript const obj1 = { a: 1 }

const obj2 = { b: 2 }

// obj1.proto = obj2

Object.setPrototypeOf(obj1, obj2)

console.log(obj1) ```