2013-06-01 7 views
0

Я задаюсь вопросом, что не так с этим кодом, он выбрасывает Ошибка синтаксиса: неожиданный токен «anotherFuction, если я добавлю часть anotherFunction. Может кто-то объяснить, почему, JavaScript меня так запутывает . с всеми этими разными способами вызова функцииjQuery Ошибка объявления функции объекта буквально

var ajax = { 

     parseJSONP : function(result) { 
      console.log(result) 

      //iterate each returned item 
      $.each(result.items, function(i, row) { 
       $('#listview_test').append('<li><a href="#headline"><img src="' + row.volumeInfo.imageLinks.thumbnail + '" class="ui-li-has-thumb"/><h3>' + row.volumeInfo.title + '</h3></a></li>'); 
      }); 
      //end iteration of data returned from server and append to the list 
      $('#listview_test').listview('refresh'); 
      // refresh the list-view so new elements are added to the DOM 
     } 

     //error is here, I just wanted to add another function here to do 
     something 

     anotherFuction : function(){ 

     } 
    } 
} 

ответ

2

Вы забыли о , после закрытия } первого элемента в объекте буквального

Вы должны отделить каждый элемент, как показано ниже:.

var ajax = {  
     parseJSONP : function(result) { 
      $.each(result.items, function(i, row) { 
       $('#listview_test').append('<li><a href="#headline"><img src="' + row.volumeInfo.imageLinks.thumbnail + '" class="ui-li-has-thumb"/><h3>' + row.volumeInfo.title + '</h3></a></li>'); 
      }); 
      $('#listview_test').listview('refresh'); 
     }, 
     //^Here 
     anotherFuction : function(){ 
      // No more syntax errors! 
     } 
} 
+0

Есть ли какая-либо польза или почему мы объявляем такие функции? Я не имею в виду кому, но внутри объектных литералов –

+1

@DaimanLoks Да, но я не могу это объяснить, как и Дуглас Крокфорд. См. Раздел «Вызов» (глава 4.3.1) в его книге, JavaScript - хорошие детали. Вы можете просмотреть его онлайн бесплатно - http://eleventyone.done.hu/OReilly.JavaScript.The.Good.Parts.May.2008.pdf – lifetimes

1

При использовании "Объект Буквальное Синтаксис", например .:

var object = {}; 

Вы должны отделить все "элементы" (переменные, функции) с запятой (,).

Так что ваш код будет:

var ajax = { 
    parseJSONP: function(result) { /* function body from above */ }, 
    something, 
    anotherFunction: function() {} 
} 

уведомление добавление запятых (,) после something и parseJSONP.