Object.create(null)与{}区别

Object.create() 方法会使用指定的原型对象及其属性去创建一个新的对象

在阅读vue源码时经常会看到var m =Object.create(null)这样的式子,会思考为什么不直接用{},同样创建一个空对象。
直接实例来看看吧

Object.create(null)与{}区别_第1张图片
image.png

得到的结果呢?


Object.create(null)与{}区别_第2张图片
image.png
如果在里面对象里面添加属性值的话呢?
Object.create(null)与{}区别_第3张图片
image.png

结果


image.png

在上面,我们可以看到,直接用 var m = {}的情况下,虽然我们得到的也是{},但是他会继承对象的各种内置属性,包括各种处理对象的方法,而如果直接用Object.create(null)得到的{},就只是一个空对象,并没有继承对象的基本属性。

这样的好处是什么呢?

在vue组件中我们经常会需要自己动态添加属性,这样做的好处在于避免了自加属性与默认属性的重名,除去了不必要的属性,显得较为轻便。

你可能感兴趣的:(Object.create(null)与{}区别)