js中this的指向问题


js中this指向的问题

  • 这样吧,我先说结论好了,不想看的小伙伴或者知道原理的可以直接记公式
  • 函数直接被调用时this则指向window(也就是没有.的情况),函数作为某对象的方法调用时(也就是谁调用了这个函数,this就指向调用这个方法的对象),this指向该对象,而箭头函数没有执行上下文,取决于他就近的外面的一层非箭头函数的函数(箭头函数没有执行上下文,取决于最近的非箭头函数的那个函数)。

下面我就来进行一一验证

1 寻找”.”,如果没有找到这个点,那么this就指向window

var app = {
  name: "cxy"
}
//这个是指向的window,可以自己将代码copy进浏览器里面运行试试
console.log(this)
  • 还有一个就是函数调用的例子
    function foo(callback){
      callback(); //调用其实在这里,你是找不到“.”的
    }
    foo(function(){
      console.log(this);  //自己去运行代码看this指向谁
    })
    //匿名函数里面打印this,没有任何的. 所以指向window,不信可以自己运行一下试试

    2 寻找”.”前面一层的那个对象,如果前面一层是对象或者函数,那this就指向这个函数或对象

    var person = {naem: "cxy"}
    

person.sayHello = function(){
console.log(this)
}

// 执行
person.sayHello()
// this 指向的是调用该方法的对象

## 3 调用语句中有多个.
```js
var person = {name:111}
person.height = {heig: 1.8}
person.height.hello = function(){
  console.log(this)
}
person.height.hello()

// 打印的this指向最近调用方法的对象

4 通过this引出一个问题就是原型和原型链

4.1 什么是原型,有待我继续研究一下



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1371769065@qq.com

文章标题:js中this的指向问题

字数:441

本文作者:一叶知秋

发布时间:2020-07-19, 09:47:45

最后更新:2020-07-19, 23:56:49

原始链接:http://yoursite.com/2020/07/19/fontend/js%E4%B8%ADthis%E7%9A%84%E6%8C%87%E5%90%91%E9%97%AE%E9%A2%98/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

相册 github