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

文字对象中的“this”关键字[重复]

  •  1
  • SoroushNeshat  · 技术社区  · 6 年前

    我有以下代码。我预料到了 打印 厕所 在浏览器控制台中。但它打印的是未定义的。有人能告诉我为什么吗?

    const firstObj = {
        info: "john",
        display: function (logger) {
            logger();
        }
    }
    
    
    const secondObj = {
        info: "mike",
        logger: function () {
            console.log(this.info); // logs undefind . but i expected to log john
        }
    };
    
    
    firstObj.display(secondObj.logger);
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   Mamun    6 年前

    必须绑定对象才能指定 上下文 在哪儿 this 应该工作:

    secondObj.logger.bind(firstObj)
    

    const firstObj = {
        info: "john",
        display: function (logger) {
            logger();
        }
    }
    
    
    const secondObj = {
        info: "mike",
        logger: function () {
            console.log(this.info); // logs undefind . but i expected to log john
        }
    };
    
    
    firstObj.display(secondObj.logger.bind(firstObj));