bind
bind;
在创建函数的时候,定义好函数的this指向,然后函数的this指向不因任何外部环境而改变;
函数的this指向 , 函数的调用者;
var obj = {
name:"obj",
a : function(){
console.log(this);
}
}
obj.a(); //this => obj;
var fn = obj.a;
fn(); // this => window;
同一个函数因为调用者的不同,this的指向是会发生改变的;
this 谨慎使用;
bind => 让函数的this 不会发生改变; 变成固定值;
*** bind 只能用在匿名函数上!!
var fn = function (){
console.log(this);
}.bind({});
fn();
var obj = {
a : function(){
console.log(this);
}.bind({a:1})
}
obj.a();// this => obj;
var fn = obj.a;
fn(); // this => window;
bind根据前面的函数创建了一个新函数返回出来;这时候我们赋值给 fn 的函数是bind创建的新函数;
var obj = {
fn : function(){
// fn1 ;
return function(){
// fn2;
}
}
}
var a = obj.fn();
相当于给a赋值了 obj 中 fn 函数的返回值;
bind 还可以定义参数;
var fn = function(a,b,c){
console.log(a,b,c)
}.bind({},1,2,3)
fn(456,1234563,123456);
bind定义的值,其余任何方法方式都没办法改变
相关阅读
小技巧:apache启动错误 AH00072: make_sock: could not
在windows下准备准备开启apache,发现端口被占用,看了host.conf里面配置的listen端口是80,但是提示是443,奇怪了,查了下资料,原来443是ap
1.dns 转发和递归查询 转发只是说在本地没有查询记录的前提下,是否将查询请求转给下一个dns服务器,决定了查询的下一跳地址。
前言 最近由于工作比较忙,好久都没时间静下心来研究一些东西了。今天在研究 call 和 apply 的区别的时候,看到 github 上面的一篇
绑定服务是客户端--服务器接口中的服务器。组件(如activity)和服务进行绑定后,可以发送请求、接收响应、执行进程间通信(IPC)。不会无
一直不是很理解几种js事件绑定之间的区别与联系,今天百度了一下,在此做一总结:1.如果只是简单的绑定一个事件,可以直接写在行内,点击执