javascript – 如何调用同一个对象中的另一个函数?

前端之家收集整理的这篇文章主要介绍了javascript – 如何调用同一个对象中的另一个函数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
let role = {
    test: (variable) => {
        // How do I call toLog(variable) from here?
    },toLog: (variable) => {
        console.log(variable);
    }
};

我想在test()函数调用toLog()函数,但我不知道如何.

解决方法

标准JS函数使用动态绑定,这取决于谁在运行时调用方法,所以如果我们使用role.test()调用它,它将绑定到角色.

箭头函数将其绑定到当前上下文.例如,如果代码在浏览器的控制台中是writtern的,则绑定到窗口对象.这被称为静态词法绑定,这意味着将其绑定到其中定义的闭包.

如果不使用箭头函数,这将通过角色调用指向对象本身:

const role = {
    test(variable){
        this.toLog(variable);
    },toLog(variable) {
        console.log(variable);
    }
};

role.test(5);

在这种情况下,我们不想将其绑定到外部上下文,所以我们将跳过静态绑定,有利于动态绑定.

但是,如果我们将此方法用作回调,则动态绑定将根据谁在运行该方法进行更改.为了防止这种情况,我们必须使用bind来创建一个明确的静态绑定到角色.

const role = {
  test(variable) {
      this.toLog(variable);
    },toLog(variable) {
      console.log(variable);
    }
};

let test = role.test;

try {
  test(20); // will throw an error - this.toLog is not a function - because this points to window
} catch (e) {
  console.log(e);
}

test = role.test.bind(role);

test(25); // will work because it's staticly binded to role
原文链接:https://www.f2er.com/js/153752.html

猜你在找的JavaScript相关文章