Function中的扩展方法bind()
js bind 函数 使用闭包保存执行上下文
bind()主要具有两个重要作用:
(1)一般地,方法中的this关键字总是指向调用此方法的对象,这就造成this显得很不稳定,而使用bind()方法能够保证无论什么时候调用此方法,this关键字总是指向你所要的对象.
(2)提供两次添加参数的机会.第一次是在使用bind()方法的时候,第二次是调用bind()方法返回的句
prototypejs框架中的实现方式:
Function.prototype.bind = function() {
var __method = this;
var args = Array.prototype.slice.call(arguments);//将arguments转换为数组
var object=args.shift(); //截取第一个
return function() {
return __method.apply(object,
args.concat(Array.prototype.slice.call(arguments))
);
}
}
用法实例:
var name = "window";
var obj = {
name: 'JSON',
getName: function() {
alert(this.name);
}
};
function runFun(fun) {
fun();
}
var getName2 = obj.getName.bind(obj);
runFun(obj.getName); //window
runFun(getName2); //JSON
最后修改时间:2014年9月8日星期一晚上8点57