在語言中調用和應用方法的目的是什麼?JavaScript的調用和應用方法的目的是什麼?
這似乎是反模式的一個例子,它打破了OOP原則。或者它只是提出了多範式的方法?
這個例子讓我問這個問題。
在一個地方應用(庫的一部分)的有這樣的代碼
socket.emit = function() {
if (!socket.banned) {
emit.apply(socket, arguments)
}
}
在應用(個體寫的)有這樣一段代碼
socket.emit = function(arguments){
data = Array.prototype.slice.call(arguments);
emit.apply(socket, data);
}
在的另一部分如果被禁止,該對象不應該工作的第一個地方。但第二部分對圖書館邏輯一無所知並且獨立工作。
這種情況如何解決?我們使用庫來緩解最困難的部分。
目的是用特定的調用上下文,'this'和任意數量的'arguments'來調用一個函數。除此之外,你不知道你需要知道什麼。如果這是一個關於編程原則的問題,也許這更適合[軟件工程](https://softwareengineering.stackexchange.com/)。 –
在你的第二種情況下,你爲什麼選擇'arguments'作爲你的形式參數?這樣做會影響'arguments'對象,因爲標識符'arguments'現在引用函數的第一個參數,而不是稱爲'arguments'的默認對象,它可以訪問傳遞給函數的所有參數。你是否期望'emit'被類似數組的對象作爲第一個參數調用?如果你的'emit = function(firstArg){...'和'slice.call(firstArg);'功能會更清晰。 – apsillers