2013-09-10 45 views
0

有沒有辦法來檢查函數調用是否具有正確的參數類型。 假設我有一個叫做changeCar的函數,它接受Car類型和String類型的兩個參數。檢查函數調用是否具有正確的參數類型

function Car(){ 
this.make="generic"; 
} 

function changeCar(car,mytype){ 
car.make=mytype; 
} 

var mycar=new Car(); 
changeCar(mycar,"ferrari"); 

是否有反正告訴mycar和「ferrari」是否需要運行changeCar的正確類型? 我需要在腳本運行前儘可能使用eval或try/catch來查找錯誤。

該應用程序允許學生輸入JavaScript腳本並查找函數參數和函數調用中的錯誤。

回答

0
function changeCar (car, mytype) { 
    if (car instanceof Car && mytype.toLowerCase) { 
     car.make = mytype; 
    } 
} 

Duck typing FTW。

+0

檢查_toLowerCase_檢查類似'String(mytype)=== mytype'是否有優勢? (注意不存在'new') –

+0

@PaulS。 - [這是*方式*更快](http://jsperf.com/duck-typing-vs-tostring)。 –

+2

他試圖檢查錯誤代碼,而不是檢查函數參數是否正確。他想「編譯」並得到「編譯時錯誤」。因此,這不是答案。 – DDS

相關問題