对象字面量声明和构造函数声明的比较

去某家面试的时候,在笔试的时候,看到了这个问题,回来研究一下。
JS 中有很多种对象的声明方式,一般我用到的也就是这两种,通过字面量来声明对象和通过构造函数来声明对象。

用字面量来声明对象

我们可以直接在创建对象的时候添加功能

let person = {
  name: 'paji',
  age: 18,
  sex: 'male',
  speak: function() {
    console.log('大家好');
  }
};

或者在一开始先声明一个空的对象,当然这个空对象也不是空对象,也是从 object 上继承了好多 object 的属性,只是没有自有属性

let person = {},
person.name = 'paji';
person.age = 18;
person.sex = 'male';
person.speak = function() {
  console.log('大家好');
}

用构造函数声明对象

var person = new Object();
person.name = 'paji';
person.age = 18;
person.sex = 'male';
person.speak = function() {
  console.log('大家好');
};

字面量的优势

  • 代码量更少,更易读
  • 强调对象就是一个简单的可变的散列表,而不必一定派生自某个类
  • 对象字面量运行速度更快,因为它们可以在解析的时候被优化:它们不需要"作用域解析(scope resolution)";因为存在我们创建了一个同名的构造函数Object()的可能,当我们调用Object()的时候,解析器需要顺着作用域链从当前作用域开始查找,如果在当前作用域找到了名为Object()的函数就执行,如果没找到,就继续顺着作用域链往上照,直到找到全局Object()构造函数为止
  • Object()构造函数可以接收参数,通过这个参数可以把对象实例的创建过程委托给另一个内置构造函数,并返回另外一个对象实例,而这往往不是你想要的。

尽量用对象字面量的方式来创建对象

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值