给出以下代码:



var testLiteral = {
  logMe: function() {
    logger(this, 'logMe message');
  }
}
console.log(Object.keys({ testLiteral })[0]);
logger(testLiteral, 'mainline message');
testLiteral.logMe();

function logger(caller, message) {
  console.log(Object.keys({ caller })[0] + ': ' + message);
}





我们得到以下结果:


“ testLiteral”
“呼叫者:主线消息”
“呼叫者:logMe消息”


有什么方法可以内省传递的文字以查看原始的“对象”名称,即testLiteral?我想要的结果是:


“ testLiteral”
“ testLiteral:主线消息”
“ testLiteral:logMe消息”


注意:typeofobject.constructor.name不能直接使用文字,仅分别返回objectObject

最佳答案

var testLiteral = {
  logMe: function() {
    logger(this, 'logMe message');
  }

}
console.log(Object.keys({ testLiteral })[0]);
logger(testLiteral, 'mainline message');
testLiteral.logMe();

function logger(testLiteral, message) {
  console.log(Object.keys({testLiteral})[0] + ': ' + message);
}

10-07 18:37