`

Javascript 的this用法

 
阅读更多

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`的使用方法。 1. **全局作用域与浏览器环境**: 在浏览器环境中,如果`this`在全局作用域中被引用,它通常会指向`window`对象。在Node.js环境下,`this`则默认指向`global`对象。 2. **...

    JavaScript中this关键字使用方法详解

    在本文中,我们将深入探讨`this`在JavaScript中的工作原理,以及在不同场景下的用法。 1. **函数调用方式** 在函数调用中,`this`的值取决于函数被调用的方式。如果函数是作为对象的方法调用,`this`将指向调用该...

    Javascript的this用法

    ### JavaScript中的`this`用法详解 在JavaScript中,`this`关键字的使用十分常见,但也是最容易引起混淆的部分之一。正确理解`this`的工作原理对于编写高效、可靠的代码至关重要。本文将深入探讨`this`在不同上下...

    javascript中onclick(this)用法介绍

    本文将详细介绍JavaScript中一种常见的事件处理用法——onclick(this)。 首先,我们需要理解什么是onclick事件处理器。在HTML中,onclick是一个事件属性,用于指定当元素被点击时将调用的JavaScript代码。这个属性...

    javascript中this的四种用法

    在《javaScript语言精粹》这本书中,把 this 出现的场景分为四类,简单的说就是: 有对象就指向调用对象 没调用对象就指向全局对象 用new构造就指向新对象 通过 apply 或 call 或 bind 来改变 this 的所指。 1) 函数...

    javascript this用法小结

    例如,在使用原型继承时,通过.prototype方法添加到函数原型上的方法,其内部的this仍然会正确地指向使用new关键字创建的实例,而不会指向原型对象本身。 最后,在实际编程中,若需要确保this的指向不变,可以使用...

    javascript 中 this 的用法.docx

    ### JavaScript 中 `this` 的用法详解 #### 一、引言 在 JavaScript 开发过程中,`this` 关键字的使用常常令开发者感到困惑。这是因为 `this` 的值并不是静态确定的,而是取决于函数调用的方式。了解 `this` 的...

    javascript 中关于 this 的用法.zip

    在JavaScript编程语言中,...总结起来,JavaScript中的this用法是多样的,理解其行为并学会在不同场景下正确使用this是JavaScript开发者必备的技能。通过深入学习和实践,你将能够更有效地控制代码中的对象和函数行为。

    Javascript的this详解

    JavaScript中的`this`关键字是一个非常重要的概念,它用于在函数执行时引用当前上下文的对象。在JavaScript中,`this`的...通过深入学习并实践这些规则,可以更好地掌握JavaScript中的`this`用法,从而提高编程能力。

    JavaScript程序设计javascript中this

    JavaScript中的`this`关键字是程序设计中的一个核心概念,它在不同上下文环境中有着不同的指向,这使得理解和掌握`this`的用法至关重要。在JavaScript中,`this`的值取决于函数调用的方式,而不是定义的方式,这为...

    js原生态函数中使用jQuery中的 $(this)无效的解决方法.docx

    在JavaScript开发中,使用jQuery的$(this)在原生态函数中可能会出现无效的问题,本文将对此进行详细的分析和解决方法的介绍。 一、问题描述 在JavaScript开发中,我们经常使用jQuery来简化我们的代码,但是当我们...

    Javascript中神奇的this

    使用`.call()`, `.apply()`或`.bind()`方法可以显式地设置`this`的值。这些方法允许开发者指定`this`应该绑定到哪个对象。 ```javascript function fn() { console.log(this); } var obj = { a: 1 }; var fun = ...

    JavaScript中this的使用

    通过对不同场景下`this`的用法进行分析,我们可以更好地控制代码中的对象引用,从而编写出更清晰、更易于维护的程序。在实际开发中,应根据需求灵活运用`call`、`apply`和箭头函数来处理`this`的指向问题。

    this的用法以及改变this指向

    ### this的用法以及改变this指向 #### 为什么学习this? 在JavaScript中,`this`关键字的使用极为广泛。理解并掌握`this`的工作机制对于提高编程能力至关重要: 1. **阅读代码的能力**:不了解`this`的工作原理,...

    高手详解javascript中的this指针

    正确地使用`this`可以使JavaScript代码更具有面向对象的特性,同时避免常见的错误。在编写JavaScript代码时,时刻关注`this`的上下文,确保其指向预期的对象,是提高代码可读性和可维护性的关键。

    详解JavaScript中this关键字的用法_.docx

    下面我们将详细探讨在不同场景下`this`的用法。 1. **全局作用域中调用函数** 当函数在全局作用域中被调用时,`this`通常引用的是全局对象,在浏览器环境中就是`window`对象。例如: ```javascript function fn1...

    Javascript类的继承,使用this.callParent调用超类方法

    在本话题中,我们将深入探讨JavaScript中的类继承,并特别关注`this.callParent`这个方法,它是如何被用来调用超类方法的。 首先,让我们了解JavaScript中的构造函数。构造函数是一种特殊的函数,用于创建和初始化...

Global site tag (gtag.js) - Google Analytics