簡體   English   中英

使用JavaScript中的new將參數傳遞給使用內聯調用創建的對象

[英]Passing parameter to object created with inline invocation using new in JavaScript

請原諒題名; 我找不到更好的方式來表達這一點。

在閱讀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");

但是,這似乎有些令人費解,我更喜歡使用“新”,這與John Resig討論的這個問題有關。 當我返回對該對象的引用時,它仍然可以工作,但是看起來非常難看。 無論如何,在這種情況下,我仍然可以使用帶有構造函數參數的new運算符嗎?

我將通過將類定義為變量,然后使用new關鍵字創建它的實例來親自解決此問題,如下所示:

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

var redApple = new Apple("red");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM