JavaScript构造函数的用例

时间:2017-02-22 18:27:15

标签: javascript

最后决定花时间抓住JS编程,而不是仅仅将意大利面条代码填充到文件末尾的脚本标签中。在我看来,YDKJS是一个很好的资源。我对工厂模式,IFFE以及如何使用对象和Object.create(...)有很好的理解。

我无法找到答案的一个问题是,是否仍在使用构造函数,如果是,那么它们的用例是什么?我问的唯一原因是因为有多年的文章才是答案。似乎这个想法是为了更接近基于类的继承(pre es6)。

基本上这是一种设计模式,我应该把时间花在学习上吗?

3 个答案:

答案 0 :(得分:1)

当然构造函数是有意义的并且被使用。请考虑以下事项:

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的空对象传递给它。将构造函数的返回值赋给变量时,它将包含this对象,该对象由函数原型的属性以及在构造函数中应用的this的修改进行扩展。因此,构造函数在JS中非常有用和必要。

在ES6中,构造函数(以及一般的类导向)变得更加突出;请查看https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes了解更多内容。

答案 1 :(得分:1)

  

构造函数是否仍在使用?

是的,他们当然是。它们现在并将继续是主要的对象构建模式。它们与对象文字一样普遍。它们在引擎中具有最佳性能优化,并且在需要大量实例时使用。带有用于初始化的构造函数的类模式和用于方法继承的原型是您获得的最方便的模式,从ES6开始使用额外简单的class语法。

答案 2 :(得分:0)

构造函数旨在与 new 前缀一起使用。新前缀基于函数的原型创建一个新对象,并将该对象绑定到函数的隐式this参数。

资料来源:道格拉斯·克罗克福德的JavaScript好部分