[].slice function on JavaScript 這幾天學習 CoffeeScript ,裡面有許多好玩的 syntax sugar ,當然 JavaScript 原生不會有這種產物,很明顯是沿用 Python, Ruby 語言的優雅之處。 裡面有個部分有個奇妙的使用方式,介紹如下, Coffee code awardMedals = (first, second, others...) -> gold = first silver = second rest = others 編譯後的 JavaScript code awardMedals = function() { var first, others, second; first = arguments[0], second = arguments[1], others = 3 <= arguments.length ? __slice.call(arguments, 2) : []; gold = first; silver = second; return rest = others; }; 裡面用到了有趣的 Array.slice ,用模擬的方式來實踐 others… 這樣的語法糖衣。 原理說明 原理是直接採用 Array.slice ,通常這個方法都是用在陣列裡面,不過在這邊是用來做傳參考參數的指定。 Array 這個原生 Object 可以直接使用 [] 來使用, others = (3 <= arguments.length) ? __slice.call(arguments, 2) : []; 從呼叫的方法 (function) 直接使用 arguments 取得所有帶進去 function 中的參數,傳進去的參數數目必需要大於限制,這邊是 3 ,接著才會將第三個以後傳入的參數做分割。 這邊使用了 call 這個方法,不太曉得的人可以,call 會直接執行此 slice 這個方法。 使用 call 這樣的方式執行,第一個傳遞進去的變數,就是 this ,需要告訴這個方法,呼叫者是誰 (傳說中的 JavaScript, what is this)。 後面就可以依...
熱血,是一輩子的事! Answer is there, dig it.