最后,我决定花时间掌握JS编程,而不是仅仅将意大利面条代码塞到文件末尾的脚本标记中。在我看来,YDKJS是一个很棒的资源。我对工厂模式、IFFE以及对象和Object.create(...)有很好的理解。都被使用过。
我找不到答案的一个问题是,构造函数是否仍在使用,如果是,它们的用例是什么?我问这个问题的唯一原因是,多年来有很多文章都是这样回答的。这个想法似乎是为了更接近基于类的继承(pre es6)。
从本质上说,这是一个我应该投入时间学习的设计模式吗?
发布于 2017-02-22 19:19:43
当然,构造函数是有意义的,并且被使用了。请考虑以下几点:
A = function()
{
this.foo = "bar";
};
A.prototype.printFoo = function()
{
console.log(this.foo);
};
B = function()
{
this.foo = "foobar";
};
B.prototype = Object.create(A.prototype);
aInstance = new A();
aInstance.printFoo(); // foo
bInstance = new B();
bInstance.printFoo(); // foobar
稍微简化一下:当使用new
关键字调用函数时,JS将其视为构造函数,并将名为this
的空对象传递给它。因此,构造函数在JS中是非常有用和必要的。
在ES6中,构造函数(以及一般的面向类)变得更加突出;有关更多信息,请查看https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes。
发布于 2017-02-22 19:36:32
构造函数还在使用吗?
是的,他们当然是。它们现在是,并且将继续是占主导地位的对象构造模式。它们和对象字面量一样普遍。它们在引擎中具有最好的性能优化,并在需要大量实例时使用。具有用于初始化的构造函数和用于方法继承的原型的类模式是您获得的最方便的模式,自ES6以来,它具有非常简单的class
语法。
发布于 2017-02-22 18:51:06
构造函数被设计为与new前缀一起使用。新前缀基于函数的原型创建一个新对象,并将该对象绑定到函数的隐式this参数。
来源: Douglas Crockford的JavaScript the good parts
https://stackoverflow.com/questions/42399452
复制