JavaScript基础知识介绍

61 阅读2分钟

JavaScript中的 "this "关键词

JavaScript中的 "this "关键字指的是一个对象,这个对象正在执行代码的当前位。"执行环境指的是函数是如何被调用的"。

  • 每个java脚本函数在执行时都有一个对其当前执行环境的引用,称为 "this"。

  • "this "指的是一个全局对象。

简单点说,"this "指的是函数调用的所有者,而不是函数。

代码摘录。

输出。

在上面的代码片段中,当函数 "bike() "被执行时,它打印出"BIKE1",因为执行的上下文没有被指定,所以默认情况下,它获取了全局执行上下文,其中包含一个名为 "name "的变量,其值为 "BIKE1"。

在"obj1.biking() "的情况下,"BIKE2 "被打印出来,这背后的原因是函数"bike() " 是在"obj1 " 的执行上下文下被调用的,所以,"this.name"=>变成=>"obj1.name"。

当我们调用"obj2.biking() "时,类似的操作也发生了,函数"bike() "被调用的执行上下文是 "obj2",所以 "this.name"=>成为=>"obj2.name",并打印出"BIKE3"。

默认的 "this "关键字的绑定

如果我们在严格模式下,"this "关键字的默认值是"未定义",因此访问变量"name "会出现"TypeError :无法读取属性'name'"。否则,"this "关键字将作为一个全局对象。

代码片段。

输出。

"this "关键字的隐式绑定

在隐式绑定中, "this " 保留了对包围其包装函数的对象的引用,因此,当被包围在一个对象中时,"this "指的是**"调用地点"(**将从那里调用函数)。

代码片段。

输出。

"this "关键词的显式绑定

在显式绑定中,我们确定"this "应该指什么,我们可以通过使用call()、apply() 和bind()方法来实现。

call()方法允许我们立即调用一个函数,在这里我们明确定义了函数的上下文。

代码片段。

输出。

call() 方法的第一个参数指定了函数的执行环境。

apply()方法与call() 方法非常相似。唯一的区别是apply()接受的参数是一个数组,而call()接受的参数是单个参数。

bind()函数将把一个函数绑定到一个对象上,并返回一个新的函数,以后可以使用。

call()apply() 方法返回一个结果,而bind()方法则返回一个函数。

代码片段。

输出。

总而言之,当我们想立即调用函数并修改上下文时,我们使用call()和apply()。而当我们想在以后调用函数时使用bind(),并有一定的上下文。

阅读JavaScript文档以获得更多知识。
要获得更多信息,请访问Knoldus博客

参考资料:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
developer.mozilla.org/en-US/docs/…](developer.mozilla.org/en-US/docs/…)