Function.prototype.bind = function (obj) {
var self = this;//保存调用的函数。
return function(){
return self.apply(obj,arguments);
}
};
var obj = {
name:'seven'
};
var func = function () {
console.log(this.name);
}.bind(obj);
func();
bind(obj);
return self.apply(obj,arguments);
这句话不会执行函数么?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
bind方法返回的是一个带闭包的匿名函数啊。
然后在
func();时候再执行的这个匿名函数,里面的apply方法这一串方法只是把函数绑定到obj上,并且返回出来而已,并没有调用函数。
直到执行
的时候才真正的调用了里面的函数。
bind 返回的是一个函数,并没有执行原函,只是这个函数的this指向了你给的参数
apply 是执行函数,这个函数的this指向了你给的第一个参数
你好,这本书没看过,所以不知道你有没有写错,我测试了下,
我改写了下面这样就实现了,bind实现了立即执行效果。