zoukankan      html  css  js  c++  java
  • object.create(null) 和 {}创建对象的区别

    原文

      简书原文:https://www.jianshu.com/p/43ce4d7d6151

    创建对象的方法

      如果要创建一个空的对象,可以使用如下的三种方法

    var obj1 = {};
    var obj2 = Object.create(null);
    var obj3 = new Object();
    

    创建空对象的区别

      要创建一个干净的空对象,应该使用Object.create(null)而不是剩下两种。
      通过做Objist.create(NULL),我们显式指定NULL作为它的原型。所以它绝对没有属性,甚至没有构造函数、toString、hasOwnProperty属性,所以如果需要的话,可以在数据结构中使用这些键,而不需要通过hasOwnProperty进行判断。

    var obj1 = {};
    var obj2 = Object.create(null);
    var obj3 = new Object();
    
    var con1 = obj1.constructor;
    var con2 = obj2.constructor;
    var con3 = obj3.constructor;
    
    console.log(con1);//ƒ Object() { [native code] }
    console.log(con2);//undefined
    console.log(con3);// Object() { [native code] }
    

    实例说明

    const dirtyMap = {};
    const cleanMap = Object.create(null);
    const key;
    for(key in dirtyMap){
      // Check to avoid iterating over inherited properties.
      //不纯净的对象是需要做判断的
      if (dirtyMap.hasOwnProperty(key)) {   
        console.log(key + " -> " + dirtyMap[key]);
      }
    }
    
    for(key in cleanMap){
      // No need to add extra checks, as the object will always be clean
      //纯净的对象不需要做判断
      console.log(key + " -> " + cleanMap[key]);    
    }
    

      

  • 相关阅读:
    二分图最大匹配的König定理及其证明
    HDOJ 2389 Rain on your Parade
    HDOJ 1083 Courses
    HDOJ 2063 过山车
    POJ 1469 COURSES
    UESTC 1817 Complete Building the Houses
    POJ 3464 ACM Computer Factory
    POJ 1459 Power Network
    HDOJ 1532 Drainage Ditches
    HDU 1017 A Mathematical Curiosity
  • 原文地址:https://www.cnblogs.com/shcrk/p/9302572.html
Copyright © 2011-2022 走看看