我正在尝试实现自己的console.log之类的东西,并且能够执行以下操作非常方便:console.log('something',obj)
并将其打印出来。
我想重新创建此功能,但首先我必须理解它。
那么console.log
如何做到这一点?
我有这样的事情:
save : function(level, userId, message){
//handles objects
for(var i=2;i<arguments.length;i++){
switch(typeof arguments[i]){
case 'object':
message += ' ' + JSON.stringify(arguments[i]);
break;
case 'string':
message += arguments[i];
break;
case 'number':
message += arguments[i].toString();
break;
}
}
我正在寻找message
之后的所有其他参数,然后评估他们转换它们的内容,然后将它们附加到message
。
目标是能够做到
logger.save('info', ,'Started app',config.env, config.port, config.etc)
并让它智能地处理所有这些对象。
答案 0 :(得分:1)
我不确定console.log的实现,但是你想查看arguments对象:
function myConsoleLog() {
for (var arg in arguments) {
console.log(arguments[arg]);
}
}
myConsoleLog(1, 2, 3);
myConsoleLog({}, "hello");
// etc.
答案 1 :(得分:1)
你正在寻找arguments
(这就像数组一样)。
function test () {
var log = '';
for (var i = 0; i < arguments.length; i++) {
log += arguments[i] + ',';
}
console.log(log.substring(0, log.length - 1));
}
test(1); // 1
test(1,2,3,4) //1,2,3,4