[ js ] 請教一下arguments的用法
小弟最近在寫一個jQuery的Plugin,
在參考Dynatree這個Plugin時,發現了arguments的用法,
以下是看到其中一個覺得不了解的function:
(此function主要用來Debug時,寫入Log到瀏覽器Console)
問題將在最下面敘述。
Code:
==================================================================
function _log(mode, msg) {
/* 移除傳入值第一項 */
var args = Array.prototype.slice.apply(arguments, [1]);
var tag = "XX Plugin";
args[0] = tag + " - " + args[0];
/* Log模式 */
switch( mode ) {
case "info":
window.console.info.apply(window.console, args);
break;
default:
window.console.log.apply(window.console, args);
break;
}
}
function logMsg(msg) {
/* 加入debug字串到傳入值第一項mode */
Array.prototype.unshift.apply(arguments, ["debug"]);
_log.apply(this, arguments); // == this._log(arguments);
}
=====================================================================
以下是我的問題:
在_log()使用arguments,應該是不確定傳入參數的數量,
但是在logMsg()中,為何要使用arguments,特地加入一個mode參數,
然後在_log()又會他移除,何不直接 _log("debug",msg) ?
這樣寫法是不是有什麼用意?還是是coding的習慣?
--
小弟還是js新手,想請各位版友幫忙解惑一下,謝謝。
如果覺得排版看不懂或很醜在麻煩告知一下XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.220.36.130
※ 編輯: MiPony 來自: 61.220.36.130 (07/10 11:39)
推
07/10 11:50, , 1F
07/10 11:50, 1F
這個我知道QQ
不過為何還要這特地用arguments
如果這樣寫:
function logMsg(msg) {
_log("debug",msg);
}
應該比較快吧??
※ 編輯: MiPony 來自: 61.220.36.130 (07/10 12:00)
→
07/10 14:21, , 2F
07/10 14:21, 2F
→
07/10 14:21, , 3F
07/10 14:21, 3F
→
07/10 14:21, , 4F
07/10 14:21, 4F
→
07/10 14:21, , 5F
07/10 14:21, 5F
→
07/10 14:22, , 6F
07/10 14:22, 6F
→
07/10 14:22, , 7F
07/10 14:22, 7F
→
07/10 14:22, , 8F
07/10 14:22, 8F
→
07/10 15:01, , 9F
07/10 15:01, 9F
→
07/10 15:02, , 10F
07/10 15:02, 10F
→
07/10 15:02, , 11F
07/10 15:02, 11F
→
07/10 15:03, , 12F
07/10 15:03, 12F
→
07/10 15:04, , 13F
07/10 15:04, 13F
→
07/10 15:07, , 14F
07/10 15:07, 14F
→
07/10 15:08, , 15F
07/10 15:08, 15F
→
07/10 15:09, , 16F
07/10 15:09, 16F
→
07/10 15:10, , 17F
07/10 15:10, 17F
→
07/10 15:10, , 18F
07/10 15:10, 18F
→
07/10 15:10, , 19F
07/10 15:10, 19F
感謝以上回答的版友!!
原來是有點被誤導了XD
※ 編輯: MiPony 來自: 61.220.36.130 (07/10 15:38)
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章