我正在閱讀這個jquery masking plugin以試圖瞭解它是如何工作的,並且在作者調用slice()
函數的許多地方都沒有傳入任何參數。例如,這裏的_buffer
變量是slice()
d,_buffer.slice()
和_buffer
似乎保持相同的值。使用不帶參數的Javascript slice()方法
是否有任何理由這樣做,還是作者只是讓代碼比應該更復雜?
//functionality fn
function unmaskedvalue($input, skipDatepickerCheck) {
var input = $input[0];
if (tests && (skipDatepickerCheck === true || !$input.hasClass('hasDatepicker'))) {
var buffer = _buffer.slice();
checkVal(input, buffer);
return $.map(buffer, function(element, index) {
return isMask(index) && element != getBufferElement(_buffer.slice(), index) ? element : null; }).join('');
}
else {
return input._valueGet();
}
}
沒有一個能勝任的程序員永遠不會讓代碼比它所需要的更復雜。 – alex
這是必要的。 'slice'方法在函數的開始處被用於在被函數修改之前備份原始數組項,這樣作者可以在編輯之後訪問原始數組的位置,鍵和值陣列。作爲示例插件,在製作可靠的字符串操作界面時,這是不可或缺的。對@亞歷克斯的評論補充說,如果它在那裏,這是有原因的。如果你需要更好的理解,請按Ctrl + F來源並在稍後查找它被訪問的位置。 –
'//功能fn'? – Ben