this
是
Javascript
语言的一个关键字。
它代表函数运行时,自动生成的一个内部对象,只能在函数内部使
用。比如,
function test(){
this.x = 1;
}
随着函数使用场合的不同,
this
的值会发生变化。但是有一个总的原则,那就是
this
指的是,调用函数的那个对象。
下面分四种情况,详细讨论
this
的用法。
情况一:纯粹的函数调用
这是函数的最通常用法,属于全局性调用,因此
this
就代表全局对象
Global
。
请看下面这段代码,它的运行结果是
1
。
function test(){
this.x = 1;
alert(this.x);
}
test(); // 1
为了证明
this
就是全局对象,我对代码做一些改变:
var x = 1;
function test(){
alert(this.x);
}
test(); // 1
运行结果还是
1
。再变一下:
var x = 1;
function test(){
this.x = 0;
}
test();
alert(x); //0
情况二:作为对象方法的调用
函数还可以作为某个对象的方法调用,这时
this
就指这个上级对象。
function test(){
alert(this.x);
}
var o = {};
o.x = 1;
o.m = test;
o.m(); // 1
情况三
作为构造函数调用
所谓构造函数,就是通过这个函数生成一个新对象(
object
)。这时,
this
就指这个新对象。
function test(){
this.x = 1;
}
var o = new test();
alert(o.x); // 1
运行结果为
1
。为了表明这时
this
不是全局对象,我对代码做一些改变:
var x = 2;
function test(){
this.x = 1;
}
var o = new test();
alert(x); //2
运行结果为
2
,表明全局变量
x
的值根本没变。
情况四
apply
调用
apply()
是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,
this
指的就是这
第一个参数。
var x = 0;
function test(){
alert(this.x);
}
var o={};
o.x = 1;
o.m = test;
o.m.apply(); //0
apply()
的参数为空时,默认调用全局对象。因此,这时的运行结果为
0
,证明
this
指的是全局对象。
如果把最后一行代码修改为
o.m.apply(o); //1
运行结果就变成了
1
,证明了这时
this
代表的是对象
o
。
分享到:
相关推荐
JavaScript中的`this`关键字是一个非常重要的概念,它在不同上下文中具有不同的指向,这使得理解和掌握`this`的用法成为JavaScript开发中的关键点。在本文中,我们将深入探讨`this`在全局变量、函数、对象、构造函数...
此外,《JavaScript语言精粹》还会深入讨论作用域、变量提升、this关键字、事件处理、DOM操作以及异步编程,如回调函数、Promise和async/await。这些知识点对于前端开发人员来说至关重要,因为它们直接影响到网页的...
这本书由Douglas Crockford所著,他不仅是JavaScript语言的重要贡献者,更是JSON格式的发明者,因此在书中,他以其丰富的经验和深刻的洞察力,对JavaScript进行了全面而透彻的剖析。 ### 重要知识点概览 #### 1. ...
在JavaScript编程语言中,`this`关键字是一个至关重要的概念,它常常引发初学者的困惑,因为它的值在不同的上下文中可能会有所不同。`this`关键字主要用来引用对象的上下文,或者说是当前执行环境中的对象。在本文中...
2. **字母顺序的关键字列表**:关键字是JavaScript语言中预定义的保留词汇,如`break`, `case`, `catch`, `class`, `const`, `continue`, `debugger`, `default`, `delete`, `do`, `else`, `enum`, `export`, `...
`this`的值并不是静态绑定的,而是取决于函数调用的方式,这一点与许多静态类型的语言如C++或Java不同,这些语言中的`this`或`self`关键字通常指向实例对象。 #### `this`指针的动态特性 JavaScript中的`this`具有...
`this`在JavaScript中并不像其他静态类型语言(如Java或C++)中的指针那样工作,而是根据函数调用的方式动态确定其值。以下是对`this`指针的详细解释: 1. **全局作用域中的`this`** 在全局作用域中,`this`通常...
JavaScript中的`this`关键字是一个非常重要的概念,它与许多其他编程语言中的行为不同,因此常常让开发者感到困惑。本文将详细解析`this`在JavaScript中的工作原理及其绑定规则。 1. `this`并不总是指向函数自身 ...
《JavaScript语言精粹》是一本深受开发者喜爱的经典书籍,它深入浅出地讲解了JavaScript的核心概念和技术,帮助读者掌握这门语言的精髓。下面,我们将详细探讨这本书中涉及的一些重要知识点,并结合源代码"example_...
### JavaScript语言基础知识点详解 #### 1. 变量定义 **JavaScript** 是一种广泛使用的脚本语言,常用于Web前端开发。对于初学者来说,理解变量定义的基础知识至关重要。 - **变量命名规则**: - 变量名区分大小...
在HTML中,我们用占位符替换动态内容,然后用JavaScript根据用户选择的语言加载对应的文本。例如,将`<span id="greeting"></span>`与JavaScript绑定: ```javascript document.getElementById('greeting')....
`this`在JavaScript中并不像其他语言中的`this`那样简单地指向对象本身,而是根据函数调用的方式动态确定其指向。理解`this`的工作方式对于编写高质量的JavaScript代码至关重要。 1. **默认绑定**: - 当函数被...
在JavaScript编程语言中,"this"关键字是一个至关重要的概念,它用于引用对象的上下文,尤其是在函数调用时。理解this的用法是提升JavaScript技能的关键。本篇将深入探讨JavaScript中的this用法,帮助你更好地掌握这...
本"JavaScript语言参考(CHM)手册"是开发者的重要参考资料,提供了全面、详细的JavaScript语法和API信息。 CHM(Compiled Help Manual)是微软开发的帮助文件格式,它将HTML文档编译成一个单一的文件,方便用户快速...
ES,全称为ECMAScript,是JavaScript语言的一个标准化规范。这个规范由Ecma国际制定,并由ECMA-262文档定义。ES是JavaScript的核心,它定义了语言的语法、类型、语句、操作符、对象、函数等关键特性。自1997年以来,...
JavaScript是一门动态语言,其中this关键字的含义并非总是固定,而是根据函数调用的上下文动态决定的。这种特性使得this在JavaScript中具有了多重含义,对于初学者来说,确实是一个令人困惑的概念。 首先,需要明确...
根据提供的文件信息,“JavaScript语言精粹.修订版---高清版.pdf”主要聚焦于JavaScript编程语言的核心概念和技术要点。虽然给出的部分内容链接重复且未提供实际的书籍摘要或章节概述,但我们可以基于标题、描述和...
不同于传统面向对象编程语言如Java或C#中的`this`概念,JavaScript中的`this`在运行时绑定,并且其指向会根据调用函数的方式而发生变化。本文将深入探讨`this`的各种应用场景,帮助读者更好地理解和掌握这一关键概念...