>本文探讨了创建JavaScript对象的多种方法,并阐明了初学者和经验丰富的开发人员之间不同方法之间的关系。 虽然语法可能会有所不同,但基本原则令人惊讶地相似。
密钥点:
但是,重复的对象创建会导致代码重复。 需要一个更可扩展的解决方案。
工厂功能:
<code class="language-javascript">var o = { x: 42, y: 3.14, f: function() {}, g: function() {} };</code>>工厂功能为创建具有相同结构和功能的多个对象提供了解决方案。而不是直接对象的字面创建,而是从函数返回对象的字面形式:
由于每个对象具有自己的功能副本,因此这里的缺点是潜在的内存效率低下。
>原型链:
这种模式是如此普遍,以至于内置支持存在。 每个函数都会自动创建原型对象:
<code class="language-javascript">function thing() { return { x: 42, y: 3.14, f: function() {}, g: function() {} }; } var o = thing();</code>>冗余仍然是一个问题。 ES5类:
为了解决冗余,重复代码可以封装到一个函数中:
这类似于
的关键字,它简化了过程:<code class="language-javascript">var thingPrototype = { f: function() {}, g: function() {} }; function thing() { var o = Object.create(thingPrototype); o.x = 42; o.y = 3.14; return o; } var o = thing();</code>
这些被称为ES5类。
><code class="language-javascript">thing.prototype.f = function() {}; thing.prototype.g = function() {}; function thing() { var o = Object.create(thing.prototype); o.x = 42; o.y = 3.14; return o; } var o = thing();</code>
ES6类:
比较:>
<code class="language-javascript">function create(fn) { var o = Object.create(fn.prototype); fn.call(o); return o; } // ... Thing.prototype.f = function() {}; Thing.prototype.g = function() {}; function Thing() { this.x = 42; this.y = 3.14; } var o = create(Thing);</code>最常见的方法是类语法和工厂功能。 由于发动机的优化,性能差异通常可以忽略不计,但是类语法通常更快且首选标准。 在现代JavaScript中的两种方法之间都存在特征奇偶校验。
new
<code class="language-javascript">Thing.prototype.f = function() {}; Thing.prototype.g = function() {}; function Thing() { this.x = 42; this.y = 3.14; } var o = new Thing();</code>
作者为其简单,效率和全面的功能集提供了类语法。
常见问题(常见问题解答):
>> FAQS部分提供了有关JavaScript对象创建的常见问题的简洁答案,包括使用new
>关键字,Object.create()
,构造函数函数,方法,原型继承,this
>>>>>>>>>>关键字,私人属性和最佳实践。
以上是JavaScript对象创建:模式和最佳实践的详细内容。更多信息请关注PHP中文网其他相关文章!