function a(){ console.log(this);} a();常规定义一个函数a,它的作用域在a函数定义的时候已经确定,输出的this指向全局,这里没有异议。$(元素).click(function(){ console.log(this); a();})为这个元素绑定一个点击事件,回调函数里先输出this,指向$(元素),然后再调用a(),this指向的全局,没有异议。假如:1、我有函数b() ,c() ,d() , 与函数a()一样,都是全局定义,this也是指向全局。2、我在为$(元素)添加点击事件,然后依次执行a,b,c,d函数。问题:1、如何在声明函数前决定它的作用域,例如我声明个变量,var ttt,在函数里声明,就是局部的。2、在我调用a,b,c,d函数时,如何让这4个函数的this指向$(元素)?
1 回答
神不在的星期二
TA贡献1963条经验 获得超6个赞
在函数声明前,也就是这个函数的作用域并没有生成,里面的变量自然无法声明,所以没有办法提前声明.
想要修改a,b,c,d四个函数的this,可以借用函数原型中的方法
call
和apply
这两个方法的第一个参数就是你要修改this指向谁,在你这个问题中你可以这样使用a.call(this)
.之余楼上说的箭头函数,箭头函数是ES6的特性,会锁定函数内部的作用域的this始终指向定义时候的this.这里并不太适用.
添加回答
举报
0/150
提交
取消