Object.create(null)与{}区别
2017-12-03 本文已影响0人
海娩
Object.create() 方法会使用指定的原型对象及其属性去创建一个新的对象
在阅读vue源码时经常会看到var m =Object.create(null)
这样的式子,会思考为什么不直接用{}
,同样创建一个空对象。
直接实例来看看吧
得到的结果呢?
image.png
如果在里面对象里面添加属性值的话呢?
image.png结果
image.png
在上面,我们可以看到,直接用 var m = {}
的情况下,虽然我们得到的也是{}
,但是他会继承对象的各种内置属性,包括各种处理对象的方法,而如果直接用Object.create(null)
得到的{}
,就只是一个空对象,并没有继承对象的基本属性。
这样的好处是什么呢?
在vue组件中我们经常会需要自己动态添加属性,这样做的好处在于避免了自加属性与默认属性的重名,除去了不必要的属性,显得较为轻便。