Проблема в том, что setTimeout
принимает функцию в качестве первого аргумента.
В вашем фрагменте кода:
setTimeout (function () {alert (me.getName ())}, 3000);
Вы передаете функцию в качестве первого аргумента, который затем оценивается для создания предупреждения.
Во втором фрагменте, который вы передаете результат вызова функции , поэтому:
setTimeout (me.getName (), 3000);
Становится так:
setTimeout ('john ', 3000);
Благодаря тому, как работает setTimeout
, он позволит вам передать строку в качестве первого аргумента, который среда выполнения попытается вызвать как функцию, что приведет к ошибке.