0

请原谅问题标题;我找不到更好的表达方式。

我在阅读 Addy Osmani 的 JavaScript 设计模式时偶然发现了这篇文章。除了在 JavaScript 中表示类的 2 种常见方法(即使用函数和对象字面量)之外,作者还给出了一个将两者结合起来的示例,看起来像是内联调用。到目前为止一切顺利,除了我不能将参数传递给构造函数:

var apple = new function() {
    this.type = "macintosh";
    this.color = "red";
    this.getInfo = function () {
        return this.color + ' ' + this.type + ' apple';
    };
}
// can't do new function("red") obviously

我想了一个解决问题的方法

var apple = (function(color) {
    this.type = "macintosh";
    this.color = color;
    this.getInfo = function () {
        return this.color + ' ' + this.type + ' apple';
    };

    return this;
})("red");

但这似乎有点令人费解,我更喜欢使用“new”,这与John Resig 讨论的这个问题有关。由于我返回了对该对象的引用,它仍然可以工作,但看起来非常难看。在这种情况下,无论如何我仍然可以将new运算符与构造函数的参数一起使用吗?

4

1 回答 1

1

我个人会通过将类定义为变量来解决此问题,然后使用new关键字创建它的实例,如下所示:

var Apple = function(color) {
    this.type = "macintosh";
    this.color = color;
}

var redApple = new Apple("red");
于 2013-09-12T06:56:42.703 回答