代码之家  ›  专栏  ›  技术社区  ›  Shanerk

获取传递给函数的文本的Javascript“type”

  •  0
  • Shanerk  · 技术社区  · 8 年前

    鉴于以下代码:

    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 ? 我想要的结果是:

    • “testLiteral”
    • “testLiteral:主线消息”
    • “testLiteral:日志消息”

    注: typeof 和 object.constructor.name 不要使用文字,简单地返回 object 和 Object 分别地

    2 回复  |  直到 8 年前
        1
  •  1
  •   Monica Acha    8 年前

    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);
    }
        2
  •  1
  •   Karan    8 年前

    可以在将对象传递给对象之前对其进行包装 logger 作用为了 testLiteral.logMe(); 它会记录 logMe 因为 this 在…内 洛格姆 函数将引用自身。

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