4

嗨我正在構建一個angularjs服務,將通過socket.io使用websockets與後端(node.js)進行通信。我在網上找到了一小段代碼,但我不太明白它是如何工作的。特別是在「var args = arguments」下面的行上。幫幫我?Angularjs socket.io服務

angularjs_service.js

app.factory('socket', function ($rootScope) { 
    var socket = io.connect(); 
    return { 
    on: function (eventName, callback) { 
     socket.on(eventName, function() { 
     var args = arguments; 
     $rootScope.$apply(function() { 
      callback.apply(socket, args); 
     }); 
     }); 
    }, 
    emit: function (eventName, data, callback) { 
     socket.emit(eventName, data, function() { 
     var args = arguments; 
     $rootScope.$apply(function() { 
      if (callback) { 
      callback.apply(socket, args); 
      } 
     }); 
     }) 
    } 
    }; 
}); 

回答

3

這是JavaScript的背叛它的厭惡無名變量。變量arguments引用傳遞給函數的參數數組。你看到的是角碼獲取函數參數的數組並傳遞它們以應用。

function(myVar1, myVar2){ 
    console.log(arguments.length); 
} 

會輸出2

來源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/arguments

+0

好的謝謝。 $ rootScope。$ apply(function(){ callback.apply(socket,args); }); 這些行是幹什麼的? – user1424508

+3

這個框架在有角度的網站上有很好的記錄,因爲它是一個角度特定的問題。 http://docs.angularjs.org/api/ng.$ro​​otScope.Scope –

+0

如果這已回答您的問題,我將不勝感激,如果您接受它! :d –