gpt4 book ai didi

javascript - 绑定(bind)与延迟相结合

转载 作者:行者123 更新时间:2023-12-02 20:31:09 26 4
gpt4 key购买 nike

哪个更好

some_func.bind(this,arg1,arg2,arg3).delay(4);

some_func.bind(this).delay(4,arg1,arg2,arg3);

我知道这两种方法都会将事物包装在两层中,但假设其中一个参数可以说 arg1 是一个来自当前上下文的引用的对象,例如var arg1 = this.some_obj。现在,由于所有按值传递、按引用传递和函数作用域的业务,第二种方式将无法恢复 arg1 ,因为当调用延迟时,其上下文是全局对象。

最佳答案

测试起来很容易,而且两种方法都效果很好。

function object() {
this.foo = function(arg) {
document.write(this.bar+' was born on '+arg);
}
this.bar = 'Bob';
this.dob = new Date();
foo.bind(this, this.dob).delay(4);
this.dob.setFullYear(1971);
}
object(); // start the delay

出生日期是一个对象,因此通过引用传递。您可以看到这种情况的发生,因为年份是在调用后设置的,并且延迟写入显示的是过去的日期。

现在将重要的行更改为 foo.bind(this).delay(4, this.dob) 它仍然有效!

这是一个非常困难的问题。为什么 foo.delay.call(this, 4, this.dob) 不起作用?

关于javascript - 绑定(bind)与延迟相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4120529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com