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