你有没有过这样的经历?早上赶着打卡,顺手在便利贴上写下‘买杯咖啡’,贴在电脑上。到了下午,这张纸条还在那儿,提醒你完成那个简单的任务。
编程里的对象创建表达式,其实就像这张便利贴——短小、直接、用完即走。它不是复杂的工厂模式,也不是层层继承的类结构,而是一行代码里当场把对象造出来,立马投入使用。
什么是对象创建表达式
在 JavaScript 里,最常见的方式就是用花括号直接生成一个对象:
const user = { name: '张伟', age: 28 };这行代码没有定义类,也没有构造函数,但它实实在在地创建了一个对象。这个过程就叫对象创建表达式——表达式本身就能产出一个实例。
类似的还有数组:
const tasks = ['写文档', '修 Bug', '开站会'];虽然数组是特殊对象,但它的创建方式一样属于表达式范畴:写出来,就有了。
函数也是对象
很多人不知道,函数在 JavaScript 中同样是对象,而且也能通过表达式创建:
const greet = function(name) { return '你好,' + name; };这里 greet 是一个函数,但它本质上是一个可调用的对象。这种写法让你不用提前声明,需要的时候随手一写,立刻能用。
ES6 还支持更简洁的箭头函数:
const add = (a, b) => a + b;虽然语法变了,但它依然是对象创建表达式的一种体现——一行搞定,无需铺垫。
嵌套和组合也很自然
现实开发中,数据往往不是扁平的。比如你要记录一次点餐:
const order = {
customer: { name: '李娜', phone: '138****1234' },
items: [
{ dish: '宫保鸡丁', count: 1 },
{ dish: '米饭', count: 2 }
],
total: 38.5
};整个结构在一行表达式里完成。不需要先定义订单类、客户类、菜品类,直接描述当前状态。这种写法在处理 API 返回数据、配置项、临时状态时特别顺手。
对比构造函数:轻量 vs 规范
有人习惯用构造函数:
function Person(name, age) {
this.name = name;
this.age = age;
}然后通过 new Person('王强', 30) 来创建实例。这种方式适合需要统一行为和方法的场景,像是批量生产标准零件。
而对象创建表达式更像是手工定制。你只需要一个特定的数据结构,不打算复用模板,那何必绕一圈去写构造函数?直接写出来更直观。
就像你在表格里填一行数据,不会先画个表头模板再填内容,而是边填边定格式。
JSON 的底层逻辑
你每天写的 JSON 数据,本质上就是对象创建表达式的子集。浏览器解析 JSON 字符串时,最终也是靠类似机制还原成内存中的对象。
比如这段字符串:
{"title": "深夜加班", "done": false}经过 JSON.parse 后,就成了真正的对象。虽然不能包含方法或函数,但在数据交换层面,这种表达式已经足够强大。
现代框架如 React 中,组件的 props 传递也大量依赖这种即时对象:
<Notification message={{ text: '任务已完成', type: 'success' }} />这里的 message 属性直接传入一个对象表达式,组件接收到就能用,不需要额外声明变量。
写代码不是为了炫技,而是解决问题。对象创建表达式就像是工具箱里的螺丝刀——不起眼,但每次拆机都少不了它。