msyz188明仕亚洲官方网站先上代码,关于办法中的嵌套函数有3个题目,能手进。

var myNumber = {
  value: 1,
  add: functioni{
    var helper = functioni{
        console.logthis;
          this.value += i;
    }
    helperi;
  }
}
myNumber.add1;

代码中打印的this是个什么东西?
这段代码可否完成使myNumber.value加1的服从?
在不保持helper函数的条件下,运用apply、bind或许call办法来改动this指向,详细是选择指向哪个东西?
helper.applymyNumber;
helper.applythis;
helper.applymyNumber.add,[i]; 或其他????

    代码中打印的this是个什么东西?

window

    这段代码可否完成使myNumber.value加1的服从?

不克不及

在不保持helper函数的条件下,运用apply、bind或许call办法来改动this指向,详细是选择指向哪个东西?
helper.applymyNumber;
helper.applythis;
helper.applymyNumber.add,[i]; 或其他????

helper.applythis, [i];
helper.callthis, i;
helper.bindthisi;

helper.applymyNumber, [i]; //this 便是 myNumber

举荐运用bind,修正好的代码如下。

var myNumber = {
  value: 1,
  add: functioni{
    var helper = functioni{
        console.logthis;
          this.value += i;
    }.bindthis; //function后边加bind
    
    helperi;
  }
}

别的你的代码可以简化为:

var myNumber = {
  value: 1,
  add: functioni{
    //this === myNumber 
    console.logthis;
    this.value += i;
  }
}

假如不保持helper函数,起首你要保证这段代码在严峻形式下任务,不然很有可以污染window

运用apply、bind或许call办法来改动this指向,详细是选择指向哪个东西

假如你这个题目搞不明晰,发起初去搞明晰this再来看这个题目

helper.applymyNumber;
helper.applythis;
helper.applymyNumber.add,[i];

这三个都是错误的,前两个错误来由相反,即第二个参数为undefined,这会招致+运算后果为NaN,最后一个错误起因于不该该是myNumber.add,你如许写中断运算的是myNumber.add.value而不是你希冀的myNumber.value,改成helper.applymyNumber,[i];或许helper.callmyNumber.add,i;或许helper.bindthisi;都行,发起后面两种写法。

最后,发起提题目不要带能手进如许的字样

  1. window

  2. 不克不及

  3. helper.callmyNumber, i;helper.callthis, i;都可以

(看完/读完)这篇文章有何感想! msyz188明仕亚洲官方网站的分享…

发表评论

姓名 *
电子邮件 *
站点