javascript中的this:
先来看一段代码:
function test(){ //定义一个函数
alert(this.p);
}
//定义两个对象
var obj1=new Object();
var obj2=new Object();
//给两个对象都添加属性p,并分别等于1和2
obj1.p=1;
obj2.p=2;
//给obj1添加方法,这个方法是我们前面定义的函数,用于显示p的值
obj1.getP= test;
obj1.getP();//调用obj1的getP方法,输出值为1
obj2.getP=obj1.getP;//使obj2的getP方法等于obj1的getP方法
obj2.getP(); //调用obj2的getP方法,输出值为2
下面来作一下说明:
这是一个函数作为对象的方法来使用的一个例子,在这种情况下很简单。这个函数中的this是被哪个对象调用的,那么这个this就代表谁。但要注意,要在使用之前一定要让这个函数作为对象的一个方法,就像上面
ojb1.getP=test;。在这个例子中,
ojb2.getP=obj1.getP也是让obj2.getP的指针指向了test函数。
那么,当这个函数单纯使用的时候,这个this又代表什么呢?
var p = "this is window object p";
function test(){ //还是以这个函数为例
alert(this.p);
}
test(); //输出this is window object p
可以看到它的输出是全局变量 p 的值,这是为什么呢?
这是因为:当javascript解释器开始运行时,会首先创建一个全局对象,而全局变量是这个全局对象的属性,所有的方法就是这个全局对象的方法。在客户端的javascript中,这个全局对象名为:window。在调用时如果前面没有指定对象,那么它就是全局对象window。所以出现以上结果也就好理解了。
下面看一下构造函数中的this;
function Rectangle(w,h){
this.width = w;
this.height= h;
}
var rect = new Rectangle(20,10);
上面代码中代表的this是代表的谁呢?按上面所说的,如果单独调用时它就代表window。但构造函数一般来说都不是为了单独使用而定义的,都是为了创建对象而定义的。所以当创建对象时,这个this是什么呢?那就告诉你,它代表的就是创建的这个对象。估计大家都会说,你这不是废话吗?这还用说?呵呵,大家只要这么说,那就是太好了,我很高兴,知道大家的水平提高了。但是你知道为什么是代表了被新创建的这个对象吗? 我们不但要“知其然”,更要“知其所以然”。下面来解释一下:看最后一句代码:
var rect = new Rectangle(20,10);
当执行这句代码时,构造函数遇到了new关键字,就会马上创建一个空的对象,注意,这时的对象没有任何属性和方法,紧跟着这个对象被隐式的传递到构造函数中去,在构造函数中为这个对象赋值,于是对象便有了初始的属性了。所以在这其中,this就代表的是这个新创建的对象。
分享到:
相关推荐
在JavaScript编程语言中,`this`关键字是一个至关重要的概念,它常常引发初学者的困惑,因为它的值在不同的上下文中可能会有所不同。`this`关键字主要用来引用对象的上下文,或者说是当前执行环境中的对象。在本文中...
JavaScript中this的指向还没搞明白?来这看看 你就懂啦~
### JavaScript中this指向详解 #### 一、引言 在JavaScript编程中,`this`关键字的使用及其指向问题一直是困扰很多开发者的难点之一。不同于传统面向对象编程语言如Java或C#中的`this`概念,JavaScript中的`this`...
探寻JavaScript中this指针指向 JavaScript中的this指针指向是一个复杂的问题,需要深入了解JavaScript的函数调用机制和对象模型。这篇文章将深入探讨this指针指向的问题,并提供多个例子来说明this指针指向的规律。...
复习JavaScript中this指向及绑定
JavaScript中的`this`关键字是程序设计中的一个核心概念,它在不同上下文环境中有着不同的指向,这使得理解和掌握`this`的用法至关重要。在JavaScript中,`this`的值取决于函数调用的方式,而不是定义的方式,这为...
### JavaScript 中 `this` 的用法详解 #### 一、引言 在 JavaScript 开发过程中,`this` 关键字的使用常常令开发者感到困惑。这是因为 `this` 的值并不是静态确定的,而是取决于函数调用的方式。了解 `this` 的...
在JavaScript中,`this`关键字是用来引用函数执行上下文中的对象。它的行为有时可能会让初学者感到困惑,但理解其工作原理对于编写高效和可维护的代码至关重要。下面我们将深入探讨`this`的使用和一些常见场景。 1....
这种特性使得this在JavaScript中具有了多重含义,对于初学者来说,确实是一个令人困惑的概念。 首先,需要明确的是,在JavaScript中,this关键字的指向不是在编译期确定的,而是在运行期确定的。这与大多数主流的...
在JavaScript编程中,`this`关键字是一个至关重要的概念,它表示当前上下文中的对象引用。在不同的场景下,`this`的指向会有所不同,这往往让开发者感到困惑。以下是关于`this`指向问题的详细解释: 一、普通函数...
JavaScript中的this关键字是一个非常重要的概念,它在函数执行时确定了函数的执行上下文。在其他编程语言中,函数的调用上下文可能是明确的,但在JavaScript中,this的指向却可能因为多种不同的规则而变化,从而导致...
在JavaScript中,`this`关键字的作用域是一个经常让人困惑的主题,尤其对于那些习惯于其他面向对象语言(如Java或C++)的开发者来说。在这些语言中,`this`通常固定地指向当前对象实例。然而,在JavaScript中,`this...
在JavaScript中,`this`关键字是一个非常重要的概念,它指的是当前执行上下文中的对象。`this`的值取决于函数的调用方式,而不是定义方式。下面我们将详细探讨在不同场景下`this`的用法。 1. **全局作用域中调用...
对大多数有OOP开发经验的开发人员来说this是当前作用域中引用普通元素的标识符,但是在Javascript中它却显得古灵精怪的,因为它不是固定不变的,而是随着它的执行环境的改变而改变。在Javascript中this总是指向调用...
在JavaScript开发中,使用jQuery的$(this)在原生态函数中可能会出现无效的问题,本文将对此进行详细的分析和解决方法的介绍。 一、问题描述 在JavaScript开发中,我们经常使用jQuery来简化我们的代码,但是当我们...
本文实例讲述了javascript中this的用法。分享给大家供大家参考,具体如下: 实践一:this在点击等事件中的指向 html结构: <button id='btn'>click me</button> javascript结构: var btn = document...
首先,让我们了解JavaScript中的this关键字。在JavaScript中,this的指向不像其他一些面向对象的编程语言中那样固定,而是依赖于函数的调用方式。在传统的面向对象语言中,this关键字通常指代当前对象,但在...
应该是最常用的吧,函数中调用一个this,这里其实就是全局变量 var value="0"; function mei(){ var value="1"; console.log(this.value); //0 console.log(value); //1 } mei(); 输出0就是因为this指向的是全局...