簡體   English   中英

具有多個參數的構造函數?

[英]Constructor function with multiple parameters?

我看到的構造函數示例很多

function Person(first, last, age, eyecolor) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eyecolor;
    this.nationality = "English";
}

但是,如果您想要許多參數,例如20+,該怎么辦? 這似乎是低效的。 聲明一個包含多個參數的構造函數的正確有效的方法是什么?

我的最終目標是創建具有許多用戶設置(slidesToShow,slidesToScroll,slideClass等)的圖像滑塊。 因此,我希望用戶能夠對其進行初始化並提供選項。 我現在擁有它的方式有點奇怪。 例:

function Slider(options) {
 const slideClass = options.slideClass
}

然后像這樣初始化它:

const demoSlider = new Slider({
 slideClass: 'image-slider'
})

但是我沒有像普通的構造函數那樣使用this關鍵字,但是它也不是對象文字。 所以我的代碼一定是錯誤的嗎? 剛從主要是jQuery切換為嘗試以正確的方式學習/編寫普通JS。

感謝您的任何幫助!

要么只是在this.options下存儲一個對象:

 function Slider(options) {
    this.options = options;
 }

或者,如果您想直接在this下使用,則只需使用Object Assign:

 function Slider(options) {
   Object.assign(this, options);
    console.log(this.name);
 }

 new Slider({ name: "test" });

我認為您最好將它們一一設置,因為它們可能具有默認值,例如:

this.height = (options.height)?options.height:100;

另外我認為您不太了解new的含義。

您沒有使用this ,這意味着所有變量都在您的函數中,

也許在這種情況下,您只需要執行一次該函數即可啟動滑塊事件。

因此,您只需要調用Slider(options)

new Slider()將創建一個可以重復使用的對象,

但是您甚至沒有分配給像var mySlider = new Slider()這樣的var mySlider = new Slider() ...

在這種情況下,您應該考慮是否需要將函數設計為function還是constructor

暫無
暫無

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

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