栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

关于js中this的指向

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于js中this的指向

js中this的指向是在运行时会变动的

这句话严谨的说是有问题的。

this这个关键词,在java中的解释是引用当前类的实例变量。这里有两个关键词当前类和实例变量,说白了this是当前执行方法的调用者

比如

const a = {
  say() {
    console.log(this === a);
  }
}

a.say(); // true

再比如

class A {

  constructor() {
    this.name = "A";
  }

  say() {
    console.log(this.name);
  }
}

const a = new A();

a.say(); // "A"

const b = {
  name: "B",
  say: a.say
}

b.say(); // "B"

但有时,我们会遇到下面的情况

function sayThis() {
  // TODO
  console.log(this);
}

sayThis();

一个方法,没有直接调用者。。。。

这种情况的时候,代码的效果就是这样的

function sayThis() {
  // TODO
  console.log(this);
}
this.sayThis();

如果一个函数没有显式的调用者,那么,这个函数的调用者就是此函数执行的作用域中的this

所以,归根结底,this是当前执行方法的调用者

你以为这样就结束了?Too young too simple

js中还有三个显式绑定this的方法,bind,apply,call当使用这些方法指定执行函数的this时,那this基本上就是指定的了

基本上?有特殊情况吗?

有!!!!

箭头函数

const sayThis = () => {
    console.log(this)
}

上面的代码用babel编译之后

var _this = this;
var sayThis = function () {
    console.log(_this);
};

很容易理解箭头函数中this的指向

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号