美文网首页
Javascript中的this

Javascript中的this

作者: 章鱼要回家 | 来源:发表于2019-02-28 14:28 被阅读0次

关于this

在JS中,this总是指向一个对象
this的指向是在运行函数时动态绑定的。

使用this的四种情况

对象方法

当函数作为对象的方法被调用时,this指向该对象。


image

普通函数

在普通函数中使用时,this总是指向全局对象(在JS中,全局对象是window)。


image

有一种特殊情况,比如在某节点的事件函数内部,有一个局部的方法,当这个方法被当做普通函数调用时,其内部的this指向的是window,但我们往往希望它指向该节点。


image
最为常用的解决方法是,用一个变量将指向节点的this保存起来。
image

在ES5的strict模式下,这种情况下的this 经被规定为不会指向全局对象,而是 undefined。

构造函数

当函数作为构造函数调用时,this指代new出的对象。
构造函数的外表跟普通函数一模一样,它们的区别在于被调用的方式。当用new运算符调用函数时,该函数总会返回一个对象,通常情况下,构造器里的this就指向返回的这个对象。
由于react组件化的思想,构造函数在react中的应用十分广泛。


image

需要注意的是,如果构造函数显式地返回了一个object类型的对象,那么此次运算结果最终会返回这个对象,而不是我们之前期待的this:


image
如果构造器不显式地返回任何数据,或者是返回一个非对象类型的数据,就不会造成上述问题:
image

Function.prototype.call或Function.prototype.apply

用上述两种方法,可以动态改变传入函数的this,即改变this的指向。call和apply很好地体现了JS函数式语言的特性,它们也出现在很多设计模式中。


image

相关文章

  • 1body中添加js

    1 中的 JavaScript JavaScript 函数和事件上面例子中的 JavaScript 语句,会...

  • JS中的类型转换

    JavaScript 中的类型转换 JavaScript 基本数据类型 JavaScript 中的一共有 8 中内...

  • js中的this

    javascript中的this javascript中的this与java中的this有点不同。ECMAScri...

  • JavaScript中的字符串

    @(javascript)[js字符串][toc] JavaScript中的字符串 字符串是JavaScript中...

  • 06-JavaScript数组和函数

    JavaScript数组 JavaScript中的数组可以存储不同类型的数据 JavaScript中的数组是引用类...

  • Client's JavaScript

    什么是JavaScript? JavaScript的运行环境? 浏览器中JavaScript可以做什么? 浏览器中...

  • javascript中的this

    一般说到JS的this,都会想起在函数中变来变去的this。但是事情的发生都是有规则的约束,JS中的this也不例...

  • JavaScript中的this

    什么是this? 首先对this的下个定义:this是在执行上下文创建时确定的一个在执行过程中不可更改的变量。th...

  • JavaScript中的this

    JavaScript中的this很容易让人迷惑,但弄清楚后其实还是很好区分的。JavaScript中的this总是...

  • javascript中的this

    在javascript中的this大致可以理解成谁调用的this就指向谁 全局环境中的this 函数中的this ...

网友评论

      本文标题:Javascript中的this

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