原文

  简书原文: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]);
}

  

最新文章

  1. Oracle常用函数笔记
  2. SharePoint 2010自定义母版页小技巧——JavaScript和CSS引用
  3. 简单获取input file 选中的图片,并在一个div的img里面赋值src实现预览图片
  4. jquery 滚动到底部加载
  5. Java解析XML三种常用方法
  6. 软件工程个人项目-Word frequency program by11061167龚少波
  7. Creating Shazam in Java
  8. (转载)linux那点事儿(中)
  9. android搭建环境错误 daemon not running. starting it now on port 5037 ADB server didn't ACK
  10. 获取输入设备的vid和pid
  11. MySQL ProxySQL读写分离使用初探
  12. 用UE4来做Zego即构的房间列表
  13. Elcipse安装gradle插件
  14. TCP的定时器系列 — 零窗口探测定时器
  15. org.springframework.cloud FeignInterceptor
  16. 树莓派3代B+安装mateubuntu16.04
  17. Siki的虚幻第一季
  18. 点击eclipse包报错
  19. MessageQueue 相关概念
  20. 团队作业第六次——团队Github实战训练

热门文章

  1. php课程 12-38 php的类的构造方法和析构方法怎么写
  2. WdatePicker日期控件的使用
  3. webservie授权调用
  4. 企业网管软件实战之看视频学装Cisco Works 2000
  5. MFC CListctr显示缩略图
  6. PHP版本 D-Link 动态域名客户端
  7. 98.TCP通信传输文件
  8. cookie记住用户名密码
  9. eclipse中的乱码问题
  10. SSH进阶(2)——用Struts拦截器实现登陆限制