首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文本的Javascript 'type‘传递给函数

将文本的Javascript 'type‘传递给函数
EN

Stack Overflow用户
提问于 2018-08-16 03:36:27
回答 2查看 67关注 0票数 0

考虑到以下代码:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2018-08-16 06:31:10

代码语言:javascript
复制
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);
}

票数 1
EN

Stack Overflow用户

发布于 2018-08-16 07:07:21

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

代码语言:javascript
复制
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);
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51869258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档