我正在学习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中的概念,并对这些特殊情况感到困惑。谢谢!