美文网首页
JS中函数内的this指向问题

JS中函数内的this指向问题

作者: 每日log | 来源:发表于2020-12-22 15:08 被阅读0次

函数中的this指向通常是根据谁调用了该函数决定的

01、普通函数

普通函数中的this指向window。

function fn() {
    console.log(this); //[object Window]
}
fn();

02、立即执行函数

立即执行函数中的this指向window。

(function() {
    console.log(this);// [object Window]
})();

03、对象里的函数

对象的方法中的this指向的是对象obj。

var obj = {
    test: function() {
        console.log(this);// [object Object]
    }
}
obj.test();

04、构造函数

构造函数中的 this以及构造函数原型对象里的this都指向new出来的 person实例对象。

function Person() {
    console.log(this)
};
Person.prototype.sing = function() {
    console.log(this)
}
var person = new Person();

05、事件绑定函数

事件绑定里的this根据调用该函数的对象决定‍。

btn.onclick = function() {
    console.log(this); // btn对象
};

06、定时器函数

定时器函数里的this指向的是window。

window.setTimeout(function() {
    console.log('定时器的this:' + this);// [object Window]
}, 1000);

07、箭头函数

箭头函数不绑定this,如果箭头函数中使用this ,this关键字将指向箭头函数定义位置中的this。

function fn () {
  console.log(this); // {name: 'zhangsan'}
  return () => {
    console.log(this) // {name: 'zhangsan'}
  }
}
const o = {name: 'zhangsan'};
const fnResult = fn.call(o);
fnResult();

fn 使用call方法改变this的指向,此时fn中的this指向的是o这个对象。
在fn中return一个箭头函数,箭头函数如果使用this,是根据函数定义位置决定的,此时箭头函数定义在fn中,那么箭头函数this也指向o。

下一篇:JS中改变函数内部this的指向问题

相关文章

  • JS中函数内的this指向问题

    函数中的this指向通常是根据谁调用了该函数决定的 01、普通函数 普通函数中的this指向window。 02、...

  • 关于js函数中this的指向的问题

    @(javascript)[JavaScript中this的指向] 关于js函数中this的指向的问题 javas...

  • js中的this

    目标:js中this的指向? 问题的引出 指出this指向什么 js中函数的三种调用形式 func(p1, p2)...

  • JS class中函数this指向问题

    示例 对于f2,由于是箭头函数,this相当于普通变量,本身没有时向父级作用域获取,因此获取到对象a 对于f1,结...

  • this

    this在js中主要研究的是函数中的this,不代表函数外没有this,函数外的this指向window js中的...

  • js中的this,箭头函数的this,以及call()和bind

    js中的this问题 js中的this有点时候很迷,不同的时候this会指向不同的对象。1.函数的this:通常情...

  • JS--this指向问题

    JS--this指向问题 1.function中的this在不同环境下的指向 事件调用环境:谁触发的事件,函数里面...

  • 关于面向对象中this指向问题

    this指向 今天就和大家来探讨一下在js面向对象中的这个this的指向问题, 一般来讲在函数中this的指向是当...

  • JavaScript中this使用

    JS中this指向 this在全局作用于下指向window 函数中使用的this指向: 函数在调用时,JavaSc...

  • Reflux回调函数的坑

    this指向问题 刚开始一直报找不到completed函数,原因是js里this指向的问题 1.箭头函数的this...

网友评论

      本文标题:JS中函数内的this指向问题

      本文链接:https://www.haomeiwen.com/subject/lujsnktx.html