2013-09-10 3 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 и «феррари» являются правильными типами, необходимых для запуска 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'? (Обратите внимание на отсутствие «нового») –

+0

@PaulS. - [Это * путь * быстрее] (http://jsperf.com/duck-typing-vs-tostring). –

+2

Он пытается проверить код на наличие ошибок, а не проверить правильность параметров функции. Он хочет «скомпилировать» и получить «ошибки времени компиляции». Поэтому это не ответ. – DDS

Смежные вопросы