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