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

javascript Function.call中的this指向问题

javascript Function.call中的this指向问题

MYYA 2018-09-11 13:25:36
已知如下代码:var foo = 1;var bar = 10;function a (arg, func) {  this.foo = arg + this.bar;   func(this.foo); }var b = {  foo: 100,  bar: 1000}; a.call(b, 10000, function(x) {  console.log(this.foo + x); });问: 该代码执行后控制台打印结果是什么?分析产生该结果的原因。我本来以为执行结果会是22000,因为直接把call中的参数带入函数a后是:function a (arg, func) {  this.foo = arg + this.bar;  console.log(this.foo + this.foo); }然后由于arg = 10000,b.foo = arg + b.bar = 10000 + 1000 = 11000,11000 + 11000 = 22000.但是执行结果却是11001,也就是说console.log里的this指向的是window,对此我表示不解,既然这个function是作为a的参数带入的,既然a的this被指向了b,为什么这里的this不会指向b呢?希望各位高手解惑。另外,如果这个this不指向b,有没有什么方法在仍使用this.foo的情况下将这个this指向b?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 564 浏览
慕课专栏
更多

添加回答

举报

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