关于js函数自身的作用域的问题?

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指向$(元素)?

繁星coding
浏览 453回答 1
1回答

神不在的星期二

在函数声明前,也就是这个函数的作用域并没有生成,里面的变量自然无法声明,所以没有办法提前声明.想要修改a,b,c,d四个函数的this,可以借用函数原型中的方法call和apply这两个方法的第一个参数就是你要修改this指向谁,在你这个问题中你可以这样使用a.call(this).之余楼上说的箭头函数,箭头函数是ES6的特性,会锁定函数内部的作用域的this始终指向定义时候的this.这里并不太适用.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript