4
Javascript中很好用的東西之一是能夠將函數作爲參數發送。我有一個應用程序,我必須將類作爲參數發送。發送一個構造函數作爲參數
舉一個簡單的例子,我需要一個函數,使得在類的一些測試,我要發送的類作爲參數:
test(ClassA);
test(ClassB);
其中ClassA和ClassB的是兩個不同的類別。
一個第一次可能的解決方案是:
function test(theClass) {
var object1 = new theClass();
var object2 = new theClass();
assert(object1.toString()===object2.toString());
// ... more asserts ...
}
這種運作良好,但它不會讓我送參數構建的類。例如,ClassA可能有幾個初始化選項,我可能要單獨測試每個選項。
一個第二個可能的解決方案是:
function test(theClass, theInitializationOptions) {
var object1 = new theClass(theInitializationOptions);
var object2 = new theClass(theInitializationOptions);
assert(object1.toString()===object2.toString());
// ... more asserts ...
}
,我可以使用這樣的:
test(ClassA, {option1: 1, option2: 2...});
test(ClassA, {option1: 2, option2: 3...});
test(ClassB, {});
這種運作良好,但它是很麻煩 - 它需要我送兩個參數,如果「測試」功能使用子功能,它將不得不一直髮送這兩個參數。我正在尋找只有一個參數的函數'測試'。
第3可能的解決方案是發送一個初始化函數,而不是一類:
function test(theClassConstructor) {
var object1 = theClassConstructor();
var object2 = theClassConstructor();
assert(object1.toString()==object2.toString());
}
,我可以使用這樣的:
test(function() { return new ClassA(1,2,3); }) /* test class A */
test(function() { return new ClassB(4,5); }) /* test class B */
的問題是,這種「測試」功能需要一個函數而不是一個類。
我正在尋找一個將類作爲參數的函數'test'(即它將使用「new」運算符初始化一個新對象),但仍允許調用者將參數與類一起傳遞。
換句話說,我正在尋找一種方法來綁定參數與構造函數。
這是可能的Node.js?
很好,謝謝。 –