wordpress支持多个站点地址,深圳福田香格里拉酒店,网站登录账号密码保存在哪里,筹建网站信息技术javascript方法--bind()
bind方法#xff0c;顾名思义#xff0c;就是绑定的意思#xff0c;到底是怎么绑定然后怎么用呢#xff0c;下面就来说说我对这个方法的理解。 语法
fun.bind(this,arg1,arg2,...)
bind()方法会创建一个新的函数#xff0c;称为绑定函数,fun方法…javascript方法--bind()
bind方法顾名思义就是绑定的意思到底是怎么绑定然后怎么用呢下面就来说说我对这个方法的理解。 语法
fun.bind(this,arg1,arg2,...)
bind()方法会创建一个新的函数称为绑定函数,fun方法在this环境下调用
该方法可传入两个参数第一个参数作为this作用域可以理解为让fun函数在this作用域下运行移花接木所以this对象 可以借用到fun函数第二个及以后的参数则作为函数的参数调用
bind()方法绑定函数作用域不会像call和apply方法会对目标函数进行自动执行call和apply不能用于事件绑定 实例
1.创建绑定函数
this.a 1;
var module {a : 2,getA:function() {return this.a; }
};
module.getA();//2var getA1 module.getA;
// getA在外部调用此时的this指向了全局对象
getA1();//1// 再把getA1方法绑定到module环境上
var getA2 getA1.bind(module);
getA2(); //2 从上面的例子可以看出为什么要创建绑定函数就是当我们调用某些函数的时候是要在特定环境下才能调用到所以我们就要把函数放在特定环境下就是使用bind把函数绑定到特定的所需的环境下。 2.让函数拥有预设的参数
使用bind()方法使函数拥有预设的初始参数这些参数会排在最前面传给绑定函数的参数会跟在它们后面
function list(){// 让类数组arguments拥有数组的方法slice这个函数实现了简单把类数组转换成数组return Array.prototype.slice.call(arguments);
}list(1,2,3);//[1,2,3]//给list绑定一个预设参数4
var list1 list.bind(undefined,4);list1();//[4]list1(1,2,3);//[4,1,2,3] 3.setTimeout的使用
正常情况下调用setTimeout的时候this会指向全局对象但是使用类的方法时我们需要指向类的实例所以要把this绑定要回调函数方便继续使用实例
function Fun1() { this.name 1;}
Fun1.prototype.fun2 function() {window.setTimeout(this.fun3.bind(this), 1000);}
Fun1.prototype.fun3 function(){console.log(name:this.name);//name:1
}
var fun new Fun1();
fun.fun2(); 4.快捷方法--把类数组转换成数组
第一种方法是使用apply方法 function fun1() {var slice Array.prototype.slice;return slice.apply(arguments);}fun1(1,2,3);//[1,2,3] 第二种方法是使用call方法和bind方法一起使用
function fun2() {var unboundSlice Array.prototype.slice;// 把函数的call方法绑定在数组slice方法上之后再给call方法传递参数var slice Function.prototype.call.bind(unboundSlice);return slice(arguments);
}fun2(1,2,3);//[1,2,3]