簡體   English   中英

如何將 class 構造函數作為參數傳遞

[英]How to pass a class constructor as parameter

const x = [new Date(), 1663761716, (new Date()).toJSON()];
const y = x.map((v) => new Date(v));
console.log(y);

上面的代碼將日期、數字、字符串的數組轉換為 3 個日期的數組。

我的問題是第二行。 當然它已經足夠短了,但是用相同的參數在 lambda 中調用 function 感覺很愚蠢。 應該有類似的東西:

const y = x.map(Date.constructor);

但這不起作用。 有沒有辦法將構造函數作為參數傳遞?

不幸的是,沒有捷徑可走。 你所擁有的就是你應該做的(或者像這樣直接內聯,或者一個名為 function 的可重復使用的)。 有兩個原因:

  1. 因為需要new的。 沒有辦法對map說“這里是Date ,但是使用new調用它而不是僅僅調用它”(除了你正在做的事情,使用包裝函數)。 (曾經有過一種方法的提議,但從未取得進展。)您確實需要為您的用例使用new調用Date 不使用new調用Date返回日期的字符串表示形式,而不是Date object。

  2. 因為map將三個 arguments 傳遞給回調 function,並且Date對待被調用的三個 ZDBC11CAA5BDA99F77E6FBE4D7 的處理方式不同。 您需要在您的情況下的一個參數版本。 有關詳細信息,請參閱此處問題的答案(該問題強制parseInt ,但它是同一個問題 - function 根據提供的 arguments 的數量做不同的事情)。

暫無
暫無

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

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