本文主要是介绍关于使用Object.create(null)来创建空对象,而不直接使用{}的优势,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 前言
- 1. 使用Object.create(null) 和 直接{}的区别
- 2.子类继承父类
- 3. 子类继承父类---进阶
前言
问题:为什么vue源码中使用Object.create(null)来创建空对象,而不直接使用{}???
1. 使用Object.create(null) 和 直接{}的区别
优势:使用 create 创建的对象,没有任何属性,显示 No properties,我们可以把它当作一个非常纯净的 map 来使用,我们可以自己定义 hasOwnProperty、isPrototypeOf
、toLocaleString、toString 方法,不管是有意还是不小心,我们完全不必担心会将原型链上的同名方法覆盖掉
let a = {'name': '张三'
}
let b = Object.create(null) // {} 无属性
let c = {} // {} 有属性
2.子类继承父类
简单理解mdn上面的demo,你可以理解为d继承了a,也就是
类式继承
let a = {'name': '张三'
}
let d = Object.create(a) // {name: '张三'} 继承父类
3. 子类继承父类—进阶
let a = {'name': '张三'
}
let d = Object.create(a) // {name: '张三'} 继承父类
let e = Object.create(Object.prototype,{ a:{value: a,enumerable: false, // 对象的属性是否可以通过for...in循环被遍历writable: true, // 是否可以修改value属性的值configurable: true, // 是否阻止某些操作改写该属性(是否可以修改删除值) }
})
这篇关于关于使用Object.create(null)来创建空对象,而不直接使用{}的优势的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!