在JavaScript里创建对象的这般方法常把刚开始学习的新手弄得困惑不已好像无论走哪条道都行得通可又不清楚该挑哪一条才好。我编写JavaScript都有十几年功夫了对象创建这事差不多每天都会碰到可谓基础技能。它不像变量声明那般简单直接就给出来而是给出好些做法每一种都有着自身适用的情形状况。领会这些灵活多样的方式并非是为着炫耀技能而是为了能让代码变得更为清晰更加便于维护管理。对象字面量写法到底够用吗众多的人一开始便偏好直接凭借花括号去创建对象举例而言let user { name: 张三 }。此种方式确实是最为直观的并且是我在平常撰写demo或者充当简单配置之际最为常用的。它并不需要任何多余的语法仅仅几行代码就能完成。然而问题也显著要是你需要创建数量甚多结构相同然而数据有所差异的对象比如达到一百个用户利用字面量去写就得重复写上一百回如此一来代码不仅冗余而且还极易出现差错。我见识过好些项目在起始阶段全然是运用字面量后续随着数据大量涌现增多操作其保养呵护环节简直犹如宛如一场噩梦一般让人头疼不已。在这个时候就必须得思索考量更为灵活多变的方案策略了。具现化函数属于一种简易的进阶形式去撰写一个函数返回对应对象每回调用之时皆会制造不一样的实例如此一来仅需要关注函数内部的逻辑思路数据借助参数予以传入就如同函数创建使用者函数参数为名字返回一个包含该名字的对象那般这种形式好处在于简便易懂无需理会新实例创建和原型链相关知识并存在性能方面的不足原因是每个对象都各自持有方法不会进行共享。倘若你所拥有的应用对于性能方面较为敏感或者涉及到的对象个数非常多那么工厂函数就显得不太能满足需求了。构造函数和类到底该怎么选JavaScript早期便支持的方式是构造函数它通过function User(name) { this.name name }进行定义之后借助new User(李四)来调用其优势在于能自动处理原型链方法挂载于原型之上所有实例均可共享进而节省内存我曾维护过一个全由构造函数编写的老项目代码虽冗长但逻辑清晰。只是构造函数极易致使人们忘却书写new一旦有所遗漏变量便会对全局造成污染这样的坑我已踩过好多回。在ES6当中被引入的类语法其为此解决了这一问题。有着class User { constructor(name) { this.name name } }这样的语法它相较于传统面向对象语言更为接近并且强制性使得要用new如此一来便不用再去忧心遭受误调用。类是还支持继承、静态方法等这类高级特性的因而适合大型规模的项目。但需要予以关注的是类从本质层面来讲依旧是构造函数的语法糖并未引入全新的对象模型。倘若你的项目有着兼容老浏览器的需求或者对于包体积有着极致的要求那么构造函数或许会更为稳妥。然而在当下的大多数场景之中直接运用类已然足矣。我的新近撰写的项目从来不采用构造函数类能够使代码具备更强的自文档化特性进而团队协作也会更加顺遂。