获取传递给函数的文字的 Javascript 'type'



给定以下代码:

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? 我追求的结果将是:

  • "测试文字">
  • "测试文字:主线消息">
  • "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);
}

您可以在将对象传递给函数之前包装对象logger该对象。对于testLiteral.logMe();,它将记录logMe因为函数内部thislogMe将引用自身。

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);
}

最新更新