为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星coding 2018-11-13 17:14:53
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个赞

  1. 在函数声明前,也就是这个函数的作用域并没有生成,里面的变量自然无法声明,所以没有办法提前声明.

  2. 想要修改a,b,c,d四个函数的this,可以借用函数原型中的方法callapply这两个方法的第一个参数就是你要修改this指向谁,在你这个问题中你可以这样使用a.call(this).之余楼上说的箭头函数,箭头函数是ES6的特性,会锁定函数内部的作用域的this始终指向定义时候的this.这里并不太适用.


查看完整回答
反对 回复 2018-12-06
  • 1 回答
  • 0 关注
  • 434 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信