协助我了解bind()

时间:2018-09-04 19:38:18

标签: javascript

我正在学习javascript,我对bind方法有些困惑。我将尽力解释我的困惑。

function foo(baz, bam) {
  console.log(this.bar + " " + baz + " " + bam);
}

var obj = { bar: "bar", foo:foo};
var obj2 = {bar: "bec", foo:foo};

foo = foo.bind(obj);

obj2.foo("baz", "bam");

在上面的示例中,当我执行obj2.foo时,得到的结果是bec baz bam,为什么会记录bec而不是bar?无论我怎么称呼,foo都不应该绑定到第一个对象吗?另外,为什么foo:foo是必需的?

function foo(baz, bam) {
console.log(this.bar + " " + baz + " " + bam);
callback();
}

function callback() {
console.log(this.bar);
}

var obj = { bar: "bar", foo:foo};

foo = foo.bind(obj);

foo("baz", "bam");

在第二个示例中,当我执行代码时,第一个控制台日志显示为bec baz bam,而第二个示例未定义。为什么第二个日志无法定义。我以为将foo绑定到对象使得foo无论在何处调用都不会丢失它。

很抱歉,如果这些是简单的问题,我正在研究javascript中的概念,并对这些特殊情况感到困惑。谢谢!

0 个答案:

没有答案