精华内容
参与话题
问答
  • 1、回调函数中,用箭头函数改变this的作用域 success: (res)=>{ this.setData({ //此时,...2、自定义事件中,如果使用箭头函数,则箭头函数中的this指向undefined,不指向page onLike: (event)=>{ ...

    1、回调函数中,用箭头函数改变this的作用域

    success: (res)=>{
        this.setData({     //此时,this指向page页面
            ...
        })
    }    
    

     

    2、自定义事件中,如果使用箭头函数,则箭头函数中的this指向undefined,不指向page

    onLike: (event)=>{
        likeModel.like(this.data.classic.id)  //报错,this指向undefined
      },
    

    需要修改成传统函数形式

    onLike: function(event){
        likeModel.like(this.data.classic.id)  //此时,this指向page页面,不报错
      },
    

      

     

    转载于:https://www.cnblogs.com/qq254980080/p/11068059.html

    展开全文
  • 箭头函数this问题

    2018-05-03 16:18:19
    普通函数中的this:1. this总是代表它的直接调用者(js的this是执行上下文), 例如 obj.func ,那么func中的this就是obj2....在严格模式下,没有直接调用者的函数中的thisundefined4.使用call,apply,bind(ES5新...

    普通函数中的this:

    1. this总是代表它的直接调用者(js的this是执行上下文), 例如 obj.func ,那么func中的this就是obj

    2.在默认情况(非严格模式下,未使用 'use strict'),没找到直接调用者,则this指的是 window (约定俗成)

    3.在严格模式下,没有直接调用者的函数中的this是 undefined

    4.使用call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象

    箭头函数中的this

    箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象, 定义它的时候,可能环境是window; 箭头函数可以方便地让我们在 setTimeout ,setInterval中方便的使用this。

    作用域链:当在函数中使用一个变量的时候,首先在本函数内部查找该变量,如果找不到则找其父级函数,最后直到window,全局变量默认挂载在window对象下。

    我们常见的window的属性和方法有: alert, location,document,parseInt,setTimeout,setInterval等,window的属性默认可以省略window前缀!

    例子1:此时的 this继承自obj, 指的是定义它的对象obj, 而不是 window!

     var obj = {
       say: function () {
         setTimeout(() => {
           console.log(this)
         });
       }
     }
     obj.say(); // obj

    例子2:因为f1定义时所处的函数 中的 this是指的 obj, setTimeout中的箭头函数this继承自f1, 所以不管有多层嵌套,都是 obj

    var obj = {
    say: function () {
      var f1 = () => {
        console.log(this); // obj
        setTimeout(() => {
          console.log(this); // obj
        })
      }
      f1();
      }
    }
    obj.say()

    例子3:都是 window,因为 箭头函数在定义的时候它所处的环境相当于是window, 所以在箭头函数内部的this函数window

    var obj = {
    say: function () {
      var f1 = function () {
        console.log(this); // window, f1调用时,没有宿主对象,默认是window
        setTimeout(() => {
          console.log(this); // window
        })
      };
      f1();
      }
    }
    obj.say()
    例子4:严格模式下,没有宿主调用的函数中的this是undefined!!!所以箭头函数中的也是undefined!
    var obj = {
    say: function () {
      'use strict';
      var f1 = function () {
      console.log(this); // undefined
      setTimeout(() => {
        console.log(this); // undefined
      })
      };
      f1();
     }
    }
    obj.say()
    使用箭头函数,可以让我们解决一些在匿名函数中 this指向不正确的问题; 但是要注意在和普通函数混合的时候,this的指向可能是window !








    展开全文
  • 关于ES6中箭头函数this和普通函数this指向 普通函数中的this: this代表他的直接调用者,例如obj.func,那么func的this就是obj 在默认情况下(非严格模式),没直接找到调用者,则this指的是window 在严格模式下,没有...

    关于ES6中箭头函数this和普通函数this指向

    普通函数中的this:

    1. this代表他的直接调用者,例如obj.func,那么func的this就是obj
    2. 在默认情况下(非严格模式),没直接找到调用者,则this指的是window
    3. 在严格模式下,没有直接调用者的函数中的this是 undefined
    4. 使用call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象

    箭头函数中的this

    默认指向在定义他时,他所处的对象,而不是执行时的对象,定义它的时候可能环境是window(即继承父级的this)
    ##总结##
    普通函数中的this表示调用此函数时的对象,箭头函数里面的this会继承自外部的this,普通函数中的this并不会向上继续找对象,箭头函数中会往上寻找this,直到找到所代表的this为止
    箭头函数的this永远指向其父作用域,任何方法都改变不了,包括call,apply,bind。
    普通函数的this指向调用它的那个对象。

    实例

    示例一

    <script>
    	var obj = {
    		say: function () {
        			console.log(this)
    				}
    		}
    	obj.say();
    </script>
    

    结果为window
    匿名函数,say函数没有默认的宿主对象,所以默认this指向window
    如何使用这个对象的引用?
    用一个 变量提前把正确的 this引用保存 起来, 我们通常使用that = this, 或者 _this = this来保存我们需要的this指针!

    <script>
      	var obj = {
        func: function() {},
        say: function () {
          var that = this;   //此时的this就是obj对象
            console.log(this)
            that.func()
        }
      }
      obj.say();
    </script>
    

    结果为obj

    示例二

    window.val = 1;
    var obj = {
      val: 2,
      dbl: function () {
        this.val *= 2;
        val *= 2;
        console.log(val);
        console.log(this.val);
      }
    };
    obj.dbl(); 
    var func = obj.dbl;
    func();
    

    输出 2 4 8 8
    <1> 12行代码调用
    val变量在没有指定对象前缀,默认从函数中找,找不到则从window中找全局变量
    即 val *=2 就是 window.val *= 2
    this.val默认指的是 obj.val ;因为 dbl()第一次被obj直接调用
    <2>14行代码调用
    func() 没有任何前缀,类似于全局函数,即 window.func调用,所以
    第二次调用的时候, this指的是window, val指的是window.val
    第二次的结果受第一次的影响

    示例三.在严格模式下的this

    <script>
    function test() {
        'use strict';
        console.log(this);
    }
    test();
    </script>
    

    结果是:undefined

    示例四.箭头函数中的this

    <script>
      var obj = {
        say: function () {
            console.log(this)
        }
      }
      obj.say(); // obj
    </script>
    

    此时的this是定义它的对象,即继承父级的this,obj调用了say()方法,故父级中的this指的是obj,而非window

    示例五

    <script>
      var obj = {
        say: function () {
          var f1 = () => {
            console.log(this); // obj
            setTimeout(() => {
              console.log(this); // obj
            })
          }
          f1();
        }
      }
      obj.say()
    </script>
    

    结果:都是obj
    f1继承父级this指代的obj,不管f1有多层箭头函数嵌套,都是obj.

    示例六

    <script>
      var obj = {
        say: function () {
          var f1 = function () {
            console.log(this);    // window, f1调用时,没有宿主对象,默认是window
            setTimeout(() => {
              console.log(this); // window
            })
          };
          f1();
        }
      }
      obj.say()
    </script>
    

    结果:window,window
    第一个this:f1调用时没有宿主对象,默认是window
    第二个this:继承父级的this,父级的this指代的是window.父级为say(),this指代的是window

    展开全文
  • 普通函数下的this: 在普通函数中的this总是代表它的直接调用者,在默认情况下,this指的是window, ...箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),...

    普通函数下的this:

    • 在普通函数中的this总是代表它的直接调用者,在默认情况下,this指的是window,
    • 在严格模式下,没有直接调用者的函数中的this是 undefined使用
    • call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象

    箭头函数中的this:

    •  箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),
    •  而不是执行时的对象, 定义它的时候,可能环境是window,也有可能是其他的。
    展开全文
  • 普通函数中,内层函数不能从外层函数中继承this的值,在内层函数中,this会是window或者undefined,临时变量...ES6中的箭头函数会直接调用的this是继承父级的this。 ``swift function fun(){ var self = this; s
  • ES6箭头函数this指向

    2018-03-28 17:11:00
    普通函数中的this: 1. this总是代表它的直接调用者(js的this是执行上下文), 例如 obj.func ,那么func中的this就是obj ...3.在严格模式下,没有直接调用者的函数中的thisundefined 4.使用call,apply,b...
  • es6 箭头函数 this 问题

    2018-02-09 17:37:00
    1. 在箭头函数出现之前,每个新定义的函数都有其自己的this值(例如,构造函数的 this 指向了一个新的对象;严格模式下的函数的this值为undefined;如果函数是作为对象的方法被调用的,则其 this 指向了那个调用它的...
  • 箭头函数中的this指向的是定义时的this,而不是执行时的的this 。  举例:   案例中,我们的obj对象中有一个属性x和一个属性show( )方法,show( )通过this打印出x的值,结果是undefined。这是为什么呢?难道x...
  • vue箭头函数this作用域

    2020-04-30 10:04:42
    在做vue项目时用到了axios,但是发现axios请求之后的回调函数this并不指向当前vue实例,从而导致浏览器报错。 出错代码及结果: created : function(){ axios.get('static/data.json').then(function(res){ ...
  • 先声明,本文站在巨人...1.箭头函数this是在定义函数时继承了其父级作用域的this,不是在执行过程中绑定的。 2.vue默认开启了严格模式。 3.全局作用域下的函数中使用this,在严格模式下this指向undefined 以上...
  • 普通函数和箭头函数this值可以一言以蔽之: 普通函数:this:谁调用归谁 箭头函数this等同于上一层非箭头的函数的this值或全局对象(window或undefined)(严格模式thisundefined
  • 箭头函数this

    2018-04-18 01:54:00
    在非严格模式下,匿名函数和定时器中的 this 由于没有默认的宿主...而 ES6 的箭头函数,他的 this 是继承而来的,默认是定义他的时候的宿主对象。 1、定时器的 this // (1)、ES5 写法 var obj = { fun: fu...
  • 我们知道,箭头函数没有自己的this,它的this是最近外层非箭头函数this,那直接在顶层用的箭头函数this在严格模式下是什么呢?不太好解释,我们看下代码 <body> <script type="text/javascript...
  • var obj = { x:100, show(){ setTimeout( function(){console.log(this.x);}, 500 ); } }; obj.show();//打印结果:undefined
  • 调试时 `this` 输入 `undefined` 的问题,箭头函数与babel造成的调试不方便。引言 引言 阿打发
  • 普通函数this 1、this总是代表它的直接调用者, 例如 obj.func ,...4、在严格模式下,没有直接调用者的函数中的thisundefined 5、使用call,apply,bind(ES5新增)绑定的,this指的是 绑定的对象 全局环境下 在全局环
  • 箭头函数 setTimeout this指向

    千次阅读 2018-12-17 23:45:38
    普通函数的this指向看调用,箭头函数this指向看声明,指向声明时候的父级作用域; setTimeout会延迟函数的声明 example1: 分析: 根据第1条,可知,声明时就已经确定了this的指向为父级作用域,也就是window...
  • 普通函数中的this:1. this总是代表它的直接调用者, 例如 obj.func ,那么func中的this就是obj2....使用call,apply, bind(ES5新增)绑定的, this指的是 绑定的对象箭头函数中的this默认指向在定义时作用域, 它所...
  • JS-ES6中箭头函数和普通函数this指向问题 一、普通函数中的this (1)普通函数中的this代表它的直接调用者,如obj.fn(),fn的this指向就是obj (2)默认情况下,没有直接的调用者,this的指向为window (3)严格模式...
  • 箭头函数this指向

    2018-05-04 16:09:50
    箭头函数都是在方法内部的时候,就是非方法使用的时候指向的是定义时所在的对象;当以方法的方式使用,指向的是window例如var obj = { i: 10, b: () =&gt; console.log(this.i, this), c: function() { ...
  • JS箭头函数this

    2019-10-08 20:55:31
    箭头函数this看定义他的时候,他的外层有没有函数 有:外层函数的this就是箭头函数this 无:箭头函数this就是window obj = {age:18, getAge: ()=>console.log(this.age)} obj.getAge() //undefined ...
  • 在JavaScript当中,有关this的指向一直都是初学者比较头疼的一个点,下面分享一些...需要注意的一点,在严格模式下(设置了’use strict’),this就为undefined 上面的代码是创建一个基本的构造函数以及实例对象的过程

空空如也

1 2 3 4 5 ... 13
收藏数 252
精华内容 100
关键字:

undefined 箭头函数this