美文网首页
js中this指向问题?

js中this指向问题?

作者: 独角兽KK | 来源:发表于2021-03-21 11:39 被阅读0次

This是一个关键字,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。

this 是在函数被调用时确定的,它的指向完全取决于函数调用的地方,而不是它被声明的地方(除箭头函数外)。当一个函数被调用时,会创建一个执行上下文,它包含函数在哪里被调用(调用栈)、函数的调用方式、传入的参数等信息,this 就是这个记录的一个属性,它会在函数执行的过程中被用到。

(this要在执行时确认值,定义时无法确认,this永远指向一个对象,this的指向完全取决于函数调用的位置。)

(1)作为纯函数调用this======》指window

(2)对象方法调用this======》指该方法所属对象

(3)构造函数调用this=======》实例对象

(4)事件绑定方法调用this=======》绑定事件对象

(5)定时器函数调用this=========》window

(6)立即执行函数调用this==========》window

(7)改变函数内部this指向======》cal(),apply(),bind()

一:改变this三种方式

(1)call方法:调用一个对象。

       call(thisScope,arg1,arg2.......)  

(2)apply方法:调用一个函数

        apply(thisScope,[arg1,arg2,arg3........])

(3)bind方法:不会调用函数,改变函数内部this指向,返回的是原函数改变this之后产生的新函数。

应用:如果只是想改变this指向,并且不想调用这个函数的时候,可以使用bind。

fn.bind(thisScope,arg1,arg2........)

fn是bind返回的新函数

(4)call,apply,bind三者异同

共同点:都可以改变this指向

不同点:

                all 和 apply 会调用函数, 并且改变函数内部this指向.

                call 和 apply传递的参数不一样,call传递参数使用逗号隔开,apply使用数组传递

                  bind  不会调用函数, 可以改变函数内部this指向.

应用场景:

                call 经常做继承.

                 apply经常跟数组有关系.  比如借助于数学对象实现数组最大值最小值

                   bind  不调用函数,但是还想改变this指向. 比如改变定时器内部的this指向.

二:严格模式下this指向

相关文章

  • js中this指向问题

    this的指向在函数定义的时候是无法确定的,只有函数执行的时候才能确定this到底指向谁,实际this指向是调用他...

  • JS中this指向问题

    首先声明,添加删除线的都是不太确定的 下面我们分情况解释: 1、函数调用模式--当一个函数并非一个对象的属性时,那...

  • js中this指向问题?

    This是一个关键字,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。 this 是在函数被调用时确...

  • JS进阶篇-this指向问题

    JS中this的指向问题不同于其他语言,JS中的this不是指向定义它的位置,而是在哪里调用它就指向哪里。 JS中...

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

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

  • js中this的指向问题

    this是Javascript语言的一个关键字它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用,下面分...

  • js 中 this 的指向问题

  • JS中this指向问题详解

    首先必须要说的是,this的指向在函数定义的时候是确定不了的,只有函数执行的时候才能确定this到底指向谁,实际上...

  • JS中的this指向问题

    1. this的几种绑定方法 (1)普通函数中的this指向函数的调用点 (2) call明确绑定 (3)bind...

  • JS 中的 this指向问题

    程序员就是没有人情味的原始人,不懂交际。谈不到对象。每天就是查看a-z,0-9加上!@#¥%…/&()+-=/<>...

网友评论

      本文标题:js中this指向问题?

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