2015-02-05 3 views
0

Я не понимаю, почему функция не работает, я перешел в метод foreach.Вложенная функция Javascript не работает

var methods = { 
      foreach: function(f){ 
       for(var i = 0; i <= this.x; i++){ 
        f(i); 
       } 
      } 
     }; 
     function test(x) { 
      var t = Object.create(methods); 
      t.x = x; 
      return t; 
     }; 
     var t = test(10); 
     console.log(t.x); //10 
     t.foreach(console.log()); //Uncaught TypeError: undefined is not a function 

Thx!

+0

t.foreach (console.log); // Uncaught TypeError: незаконный вызов –

+0

t.foreach (function (x) {console.log (x)}); // 1 2 3 ... Thx! –

+0

Спасибо всем! Этот неправильный пример, который я видел в книге Дэвида Фланагана: Javascript Pocket reference 3rd (номер страницы 136) Я не думал, что могут быть ошибки. –

ответ

1

Вы принимаете возвращаемое значение сотового телефона console.log(), что не является функцией.

Необходимо передать фактическую функцию.

С log работает только в контексте console вы не можете просто передать console.log, но вы могли бы, например:

t.foreach(function (logthis) { console.log(logthis); }); 
Смежные вопросы