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指向$(元素)?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
第一个我不懂你是什么意思,所以就回答第二个问题。
我理解的应该是这样:
先定义了这四个四个函数abcd,
然后
就这样。
this是上下文,和作用域没关系
ES6 箭头函数
箭头函数
在函数声明前,也就是这个函数的作用域并没有生成,里面的变量自然无法声明,所以没有办法提前声明.
想要修改a,b,c,d四个函数的this,可以借用函数原型中的方法
call和apply这两个方法的第一个参数就是你要修改this指向谁,在你这个问题中你可以这样使用a.call(this).之余楼上说的箭头函数,箭头函数是ES6的特性,会锁定函数内部的作用域的this始终指向定义时候的this.这里并不太适用.