资讯专栏INFORMATION COLUMN

JS匿名函数内部this指向

hiYoHoo / 710人阅读

摘要:网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定到底指向谁,实际上的最终指向的是那个调用它的对象案例中,第一个打出来的是,而第二个则是原因函数内部的指向调用者调

</>复制代码

  1. 网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢?
    this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上this的最终指向的是那个调用它的对象
1.案例中,第一个say打出来的是Alan,而第二个则是window

</>复制代码

  1. var name = "window"
  2. var person = {
  3. name :"Alan",
  4. sayOne:function () {
  5. console.log(this.name)
  6. },
  7. sayTwo:function () {
  8. return function () {
  9. console.log(this.name)
  10. }
  11. }
  12. }
  13. person.sayOne()//Alan
  14. person.sayTwo()() // window
2.原因

函数内部的this指向调用者

sayOne调用者是person对象,所以this指向person;

sayTwo的调用者虽然也是person对象,但是区别在于这次调用并没有打出this而是在全局返回了一个匿名函数

而这个匿名函数不是作为某个对象的方法来调用执行,是在全局执行

3.我们也可以更改this指向,这里应用JS高级编程的案例

</>复制代码

  1. var name = "global";
  2. var foo = {
  3. name: "foo",
  4. getName : function(){
  5. console.log(this.name);
  6. }
  7. }
  8. var bar = {
  9. name: "bar",
  10. getName : function(){
  11. return (function(){
  12. console.log(this.name);
  13. })();
  14. }
  15. }
  16. foo.getName(); //foo
  17. foo.getName.call(bar); //bar
  18. foo.getName.call(this); //global
  19. foo.getName.call(window); //global
  20. (function(){
  21. console.log(this.name)
  22. }.bind(bar))(); //bar
  23. (function(){
  24. console.log(this.name)
  25. }.bind())(); //global

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/55009.html

相关文章

  • 匿名函数以及闭包内部this指向函数调用模式的问题)

    摘要:网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢闭包内部的指向是,为什么指向了呢下面通过函数调用模式和部分案例分析了为什么确实如此函数调用的模式方法调用模式和函数调用模式如果一个函数被设置为一个对象的属性,则称它为一个方法 网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢?闭包内部this的指向是window,为什么指向了window呢?下面通过js...

    yy736044583 评论0 收藏0
  • 匿名函数以及闭包内部this指向函数调用模式的问题)

    摘要:网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢闭包内部的指向是,为什么指向了呢下面通过函数调用模式和部分案例分析了为什么确实如此函数调用的模式方法调用模式和函数调用模式如果一个函数被设置为一个对象的属性,则称它为一个方法 网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢?闭包内部this的指向是window,为什么指向了window呢?下面通过js...

    _Zhao 评论0 收藏0
  • 匿名函数以及闭包内部this指向函数调用模式的问题)

    摘要:网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢闭包内部的指向是,为什么指向了呢下面通过函数调用模式和部分案例分析了为什么确实如此函数调用的模式方法调用模式和函数调用模式如果一个函数被设置为一个对象的属性,则称它为一个方法 网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢?闭包内部this的指向是window,为什么指向了window呢?下面通过js...

    remcarpediem 评论0 收藏0
  • JS匿名函数内部this指向

    摘要:网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定到底指向谁,实际上的最终指向的是那个调用它的对象案例中,第一个打出来的是,而第二个则是原因函数内部的指向调用者调 网上看到一句话,匿名函数的执行是具有全局性的,那怎么具有的全局性呢?this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this...

    Alan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<