`
han2000lei
  • 浏览: 276091 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

javascript中的this

阅读更多
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就代表的是这个新创建的对象。
分享到:
评论
1 楼 yudylaw 2009-04-22  
楼主的这几篇JS文章不错。

相关推荐

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

    在JavaScript编程语言中,`this`关键字是一个至关重要的概念,它常常引发初学者的困惑,因为它的值在不同的上下文中可能会有所不同。`this`关键字主要用来引用对象的上下文,或者说是当前执行环境中的对象。在本文中...

    javascript中this的指向问题总结

    JavaScript中this的指向还没搞明白?来这看看 你就懂啦~

    JavaScript中this指向.docx

    ### JavaScript中this指向详解 #### 一、引言 在JavaScript编程中,`this`关键字的使用及其指向问题一直是困扰很多开发者的难点之一。不同于传统面向对象编程语言如Java或C#中的`this`概念,JavaScript中的`this`...

    探寻JavaScript中this指针指向_.docx

    探寻JavaScript中this指针指向 JavaScript中的this指针指向是一个复杂的问题,需要深入了解JavaScript的函数调用机制和对象模型。这篇文章将深入探讨this指针指向的问题,并提供多个例子来说明this指针指向的规律。...

    复习JavaScript中this指向及绑定

    复习JavaScript中this指向及绑定

    JavaScript程序设计javascript中this

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

    javascript 中 this 的用法.docx

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

    JavaScript中this的使用

    在JavaScript中,`this`关键字是用来引用函数执行上下文中的对象。它的行为有时可能会让初学者感到困惑,但理解其工作原理对于编写高效和可维护的代码至关重要。下面我们将深入探讨`this`的使用和一些常见场景。 1....

    JavaScript中this指向.pdf

    这种特性使得this在JavaScript中具有了多重含义,对于初学者来说,确实是一个令人困惑的概念。 首先,需要明确的是,在JavaScript中,this关键字的指向不是在编译期确定的,而是在运行期确定的。这与大多数主流的...

    JavaScript程序设计-javascript中this的指向问题.pdf

    在JavaScript编程中,`this`关键字是一个至关重要的概念,它表示当前上下文中的对象引用。在不同的场景下,`this`的指向会有所不同,这往往让开发者感到困惑。以下是关于`this`指向问题的详细解释: 一、普通函数...

    Javascript中神奇的this

    JavaScript中的this关键字是一个非常重要的概念,它在函数执行时确定了函数的执行上下文。在其他编程语言中,函数的调用上下文可能是明确的,但在JavaScript中,this的指向却可能因为多种不同的规则而变化,从而导致...

    深化理解Javascript中this的作用域_.docx

    在JavaScript中,`this`关键字的作用域是一个经常让人困惑的主题,尤其对于那些习惯于其他面向对象语言(如Java或C++)的开发者来说。在这些语言中,`this`通常固定地指向当前对象实例。然而,在JavaScript中,`this...

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

    在JavaScript中,`this`关键字是一个非常重要的概念,它指的是当前执行上下文中的对象。`this`的值取决于函数的调用方式,而不是定义方式。下面我们将详细探讨在不同场景下`this`的用法。 1. **全局作用域中调用...

    深入理解Javascript中this的作用域

    对大多数有OOP开发经验的开发人员来说this是当前作用域中引用普通元素的标识符,但是在Javascript中它却显得古灵精怪的,因为它不是固定不变的,而是随着它的执行环境的改变而改变。在Javascript中this总是指向调用...

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

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

    javascript中this的用法实践分析

    本文实例讲述了javascript中this的用法。分享给大家供大家参考,具体如下: 实践一:this在点击等事件中的指向 html结构: <button id='btn'>click me</button> javascript结构: var btn = document...

    关于javascript中this关键字(翻译+自我理解)

    首先,让我们了解JavaScript中的this关键字。在JavaScript中,this的指向不像其他一些面向对象的编程语言中那样固定,而是依赖于函数的调用方式。在传统的面向对象语言中,this关键字通常指代当前对象,但在...

    Javascript中this的用法详解

    应该是最常用的吧,函数中调用一个this,这里其实就是全局变量 var value="0"; function mei(){ var value="1"; console.log(this.value); //0 console.log(value); //1 } mei(); 输出0就是因为this指向的是全局...

Global site tag (gtag.js) - Google Analytics