精华内容
下载资源
问答
  • JavaScript中匿名函数this指向问题 this对象是在运行时基于函数执行环境绑定的,在全局函数中,this=window,在函数被作为某个对象的方法调用时,this等于这个对象。 但是匿名函数的执行环境是全局性的 var ...

    JavaScript中匿名函数this指向问题

    this对象是在运行时基于函数执行环境绑定的,在全局函数中,this=window,在函数被作为某个对象的方法调用时,this等于这个对象。

    但是匿名函数的执行环境是全局性的

        var name = 'window'
        var person = {
            name :'Alan',
            sayName:function () {
                return function () {
                    console.log(this.name)
                }
            }
        }
        person.sayName()()  // window 
    

    这里sayName方法return了一个匿名函数,这个匿名函数中this指向window

    解决方法还是有的,我们可以把外部作用域的this传递给匿名函数

        var name = 'window'
        var person = {
            name :'Alan',
            sayName:function () {
                var that = this
                return function () {
                    console.log(that.name)
                }
            }
        }
        person.sayName()()  // Alan
    展开全文
  • 一、题目:输出什么 var a = 10; (function () { var a = { a: 0 } var b = function () { setTimeout(() => { console.log(this.a); }) }

    一、题目:输出什么

            var a = 10;
            (function () {
                var a = {
                    a: 0
                }
                var b = function () {
                    setTimeout(() => {
                        console.log(this.a); 
                    })
                }
                b();
                b.call(a); 
                a.a = 1; 
                a = {
                    a: 2
                }; 
            })()
    

    答案和解析在下方
















    二、答案:
    在这里插入图片描述

    三、解析:

            var a = 10;
            (function () {
                var a = {a: 0}
                var b = function () {
    
                    setTimeout(() => {
                        console.log(this.a); //第四步:打印地址1所指向的内存1中的a
                    })
    
                }
                b();/*第一步:匿名函数是一个没有指针的全局变量,
          			 所以匿名函数中this指向window,
          			 所以打印的是最外层的a=10;*/
                b.call(a); //第二步:把目前obj所指向的内存1的地址1传进去了
                a.a = 1; //第三步:地址1指向的内存1中的属性a赋值为1
                a = {a: 2 }; //第五步:在内存2中生成一个对象,将属性a赋值为2
                			//将指向内存2的地址2赋值给obj
    
            })()
    
    展开全文
  • 匿名函数this指向

    千次阅读 2018-12-04 15:31:33
    匿名函数中的this指向 在一般情况下,this对象是在运行时基于函数的执行环境绑定的。若是在全局函数中,则this指向window;当函数被作为某个对象的方法调用时,this指向该对象。但是在匿名函数中...

    匿名函数

    在函数表达式中,创建一个函数并将它赋值给一个变量,若此时function关键字后没有标识符,那么创建的函数可称为匿名函数

    匿名函数中的this指向

    在一般情况下,this对象是在运行时基于函数的执行环境绑定的。若是在全局函数中,则this指向window;当函数被作为某个对象的方法调用时,this指向该对象。但是在匿名函数中,因为匿名函数的执行环境具有全局性,所以它的this一般指向window。

    var name = "The Window";
      var object = {
        name : "My Object",
        //var that=this; //可以更改this指向,使之指向当前的object对象
        getNameFunc : function(){
          return function(){
            return this.name;
          };
        }
      };
      alert(object.getNameFunc()());  // 输出为  The Window“”
    

    上面的代码中,getNameFunc()函数中返回的是匿名函数,匿名函数中的this指向的是window,因此输出的是全局变量the window。
    为什么?因为object.getNameFunc()()可以拆解如下

    var  f = object.getNameFunc(); //返回的是一个匿名函数;
         f(); //相当于调用了该匿名函数,此时的调用者是window对象。所以this会指向window
    

    如果想要匿名函数的this能够执行当前的object对象,那么就要更改this。可以在匿名函数外添加一行:var that=this----即更改this的指向,更改this的指向还可以用call、apply、bind,输出代码改为下面这行即可将this指向更改指向object对象。call、apply、bind是有区别的,共同点是可以改变执行环境上下文且第一个参数都是指定的对象,不同点:1.apply的第二个参数是数组,这一点和call和bind不一样,call和bind可以传递多个参数。2.bind()返回了改变了执行上下文环境的函数但是不会立即执行该函数,而call()和apply()会直接执行该函数。

    alert(object.getNameFunc().call(object));  //输出 “my object”
    alert(object.getNameFunc().apply(object));  
    

      利用bind方法,bind(object)()

    alert(object.getNameFunc().bind(object)());  
    

    事例如下:
    下述为一个匿名自执行函数,诚如所知,函数名实际上只是一个指向函数对象的指针,对于匿名函数而言,没有函数名。将匿名函数用一对圆括号包含表示是一个函数表达式(如:(function() {}),而后面的 () 表示调用

    var a=2;
    (function() {
         var a=3;
         return this.a;
    })()       //输出为 2,this指向的是window
    
    展开全文
  • 主要给大家介绍了关于JS匿名函数内部this指向的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用JS具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • 在函数被作为某个对象的...但是匿名函数的this是window, 如果要修改匿名函数this指向,可以使用这样的办法。 var name = 'window' var person = { name :'Alan', sayName:function () { return function (...

    在函数被作为某个对象的方法调用时,this等于这个对象。

    但是匿名函数的this是window, 如果要修改匿名函数的this指向,可以使用这样的办法。

    var name = 'window'
        var person = {
            name :'Alan',
            sayName:function () {
                return function () {
                    console.log(this.name)
                }
            }
        }
        person.sayName()()  // window 

     

    如下所示,使用that变量

        var name = 'window'
        var person = {
            name :'Alan',
            sayName:function () {
                var that = this
                return function () {
                    console.log(that.name)
                }
            }
        }
        person.sayName()()  // Alan
    

     

    展开全文
  • 匿名函数this指向window var name = "小明"; var Data = { name: "xiaoming", init: function() { setTimeout(function() { console.log(this.name); //'小明' }, 1000) } } Dat...
  • js中匿名函数和箭头函数的this指向

    千次阅读 2018-09-30 16:10:09
    匿名函数最经典的总结:就是谁调用匿名函数匿名函数中的this指向谁;匿名函数是有执行上下文,只是执行上下文是执行的时候传递过来,箭头函数中的执行上下文是父级的执行上下文,匿名函数可以作为箭头函数的父级...
  • 对象中的方法的this指向 情形1:方法中返回箭头函数 x = 11 obj = { x:22, dbl:function(){ return ()=>{return this.x} } } console.log(obj.dbl()()) //答案为22 情形2:方法中返回匿名函数 x = 11 obj = { x:...
  • 感觉网上其他资源说得虽然正确但不好理解 尝试下梳理下自己的理解 用自己的话将道理解释一遍是一个非常有效的学习方法 1.this指向用一句话概括就是从哪个对象调用this...所以匿名函数this总是指向于windos对象(非
  • js闭包中的this(匿名函数中的this指向的是windows) 一、总结 1、普通函数中的this指向的是对象,匿名函数中的this指向的是windows,和全局变量一样 2、让匿名函数中的this指向对象的两种方法 可以使用对象...
  • 2.函数表达式(匿名函数) var fun =funciton(){} 3.利用new Function('参数1','参数2','函数体') //执行效率差 this指向 普通函数 定时器函数 立即函数 this指向window 构造函数 this指向对象 对象的方法函数...
  • 1、匿名函数this一般指向window对象 2、闭包函数中的this指向window var mod = { init: function(){ console.log('this',this); var aa = function(){ console.log('匿...
  • 以下是知乎上的两个回答,分别从宏观和微观的角度分析这个原因。 1.微观角度 ...商业转载请联系作者获得授权,非商业转载请注明出处。 ...这个问题的官方答案就是,ES3时代设计上就是... 但是准确的表述并不和 匿名函...
  • 最近学习了一下函数this指向的问题,在此分享出来也方便自己日后巩固学习。 普通函数与ES6中箭头函数里,this指向的问题 一、普通函数中this (1)总是代表着它的直接调用者,如obj.fn,fn里的最外层this就...
  • 在网上看到很多关于箭头函数this指向的博客和问题解答,但是基本写的都不准确,有的甚至是错误的,在其他博客网站得到的答案基本就是“箭头函数在定义时this指向谁那么之后就一直指向谁”,这句话虽然不错,但是这不...
  • ES6标准新增了一种新的函数:Arrow Function(箭头函数)。 ...箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种像上面 的,只包含一个表达式,连{ … }和return都省略...
  • 上次在群里,看到有人发出(function(){}...前段时间请假回家,在火车上没事看javascript权威指南,上面看到了ECMAScript5标准下,严格模式中匿名函数的的this指向的是undefined,不是window,我想这应该就是原因了吧...
  • JavaScript基本知识——变量作用域一、this指向作用域二、全局变量三、匿名函数 一、this指向作用域 var title="world"; var a={ alias:this.title, title:"hello", show:function(){ console.log(this.title);...
  • JS-ES6中箭头函数和普通函数this指向问题 一、普通函数中的this (1)普通函数中的this代表它的直接调用者,如obj.fn(),fn的this指向就是obj (2)默认情况下,没有直接的调用者,this的指向为window (3)严格模式...
  • jQuery AJAX回调函数this指向问题

    千次阅读 2016-11-04 11:53:21
    jquery ajax回调函数this指向问题
  • //箭头函数是没有函数体,this也不会指向本身 //箭头函数不会new来创建构造函数的实例,它没有重复使用的构造能力,不能用new关键字来调用箭头函数,因此也不需要 构造原型了,不会自动生成prototype属性 //箭头...
  • 箭头函数this指向修改

    千次阅读 2020-02-24 23:17:03
    作为ES6的一种新规范,箭头函数的优点不仅在于写法上的简化,更多的是能够根据情况,与匿名函数之前切换使用,快速达到this指向切换的效果。 那么,箭头函数如何使用呢? 用法及格式 this指向 与普通函数区别 用法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,110
精华内容 20,844
关键字:

匿名函数的this指向