Object.create(null) 和 {} 区别是什么

最近在看vue的源码,发现里面定义一个空对象都是使用Object.create(null) 而不是使用{},带着这个疑问翻看了一下《JavaScript权威指南》。学习一下对象的申明方式,特在这里做记录和总结。

创建对象的三种方式

  • 对象直接量

var empty = {};var point = {x:0,y:0}复制代码

特点:对象直接量是一个表达式,这个表达式的每次运算都创建并初始化一个新的对象。每次计算对象直接量的时候,也都会计算他的每个属性的值。如果在一个重复调用的函数中的循环体内使用了对象直接量,他将创建很多新对象,并且每次创建的属性值有可能不同.

  • 通过new创建对象

var o = new Object();复制代码

  • Object.create()

它创建了一个新对象,第一参数是这个对象的原型,第二个参数(可选),用以对对象属性做进一步描述.

Object.create()是一个静态函数,而不是提供给某个对象调用的方法.

var o1 = Object.create({x:0,y:0});// o1继承属性x和y复制代码

可以通过传入null定义一个没有原型的新对象,通过这种方法不会继承任何东西,包括toString()等方法.这样创建的空对象在使用它的属性的时候不需要进行hasOwnProperty判断,减少性能损耗.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值