`
RednaxelaFX
  • 浏览: 3048226 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

JavaScript的"this"

阅读更多
最近在读Programming Languages Pragmatics的时候又看到了这个,虽然似乎不是什么值得提的事,为了避免忘记还是记下来。

JavaScript里的this就是被调用对象的引用。形象的说,就是那"."之前的那个对象的引用。
JavaScript里虽然有函数(类型),也有函数(对象),但在调用的时候总是跟某个对象绑定在一起来调用的。直接调用一个看似没有跟什么对象绑定的函数,实际上是跟"全局"对象绑定在一起了。在浏览器DOM里这个全局对象就是window。
当使用new运算符来构造新对象时,new之后跟着的那个构造器里的"this"指向的就是由new而构造出来的一个空的新对象。这个对象里暂时什么都还没有(有是有,不过DontEnum看不到罢了),而构造器里的this.xxx形式的赋值就能够创建给那个对象新的属性。

说到底,JavaScript里的“对象”不过就是关联数组罢了。按Concepts of Programming Languages一书里的讲法,JavaScript里的对象与perl里的hash是很像的。现下流行的JSON也正是利用了这个特性而发展出来的。

可以看看下面这段代码:
<script>
    function fooConstructor() {
        this.variable = 1;
    }
    
    function makeAnonymousFunction() {
        return function() {
            this.gooValue = 2;
        };
    }
    
    fooConstructor();          // invoke a function that looks like a constructor
    makeAnonymousFunction()(); // invoke an anonymous function
    document.write(variable + "<br />");
    document.write(window.gooValue + "<br />");
    
    var obj = new fooConstructor(); // invoke a constructor with "new"
    document.write(obj.variable + "<br />");
</script>
<!-- displays:
1
2
1
-->


虽然我们在第一次调用fooConstructor()时并没有以"object.method()"的形式来调用,它实际上等价于window.fooConstructor()。于是我们把window对象(浏览器DOM里的"全局"对象)隐式传给了所调用的函数,在fooConstructor里this就指向了window,并为window对象创建了variable属性,赋值为1。

makeAnonymousFunction()()的调用是为了演示这个this的指向与嵌套层次的无关性。makeAnonymousFunction()返回了一个函数对象,不过我们没有为这个对象给予一个名字,而是直接调用了它。与前一例一样,这个调用为window对象创建了一个名为gooValue的属性,并赋值为2。

然后我们演示了以new运算符来创建新对象的状况。这个很普通没什么需要解释的了~
分享到:
评论
2 楼 jinbo0120 2009-02-18  
JavaScript里的this就是被调用对象的引用。形象的说,就是那"."之前的那个对象的引用。 之前还不怎么理解这段话,现在明白了 谢谢!我转过去!
1 楼 czllfy 2008-11-16  
我现在才知道定义的类的构造函数直接的话是对window对象进行操作,我一直以为是默认new 了一个匿名变量呢!!!又尝到了一点知识了

相关推荐

    Presentations-JavaScriptThis-源码.rar

    `Presentations-JavaScriptThis-源码.rar`或`.zip`文件很可能是关于这个主题的一份详细讲解材料,包含了一些示例代码和演示。 1. **`this`的基本概念**: `this`在JavaScript中用于引用当前执行上下文的对象,它的...

    JavaScript this使用方法图解

    在JavaScript中,`this`关键字是一个非常重要的概念,它用于引用当前上下文中的对象。`this`的值在运行时确定,并且根据函数被调用的方式而改变。下面我们将深入探讨`this`的使用方法。 1. **全局作用域与浏览器...

    javascript中this的指向问题总结

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

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

    为了正确地使用$(this)对象,我们需要了解JavaScript中this关键字的使用规则,并且正确地使用变量来存储当前函数的this对象。 五、结语 在JavaScript开发中,使用jQuery的$(this)对象需要遵守JavaScript中this...

    Presentations-JavaScriptThis

    在这个名为"Presentations-JavaScriptThis"的资料包中,很显然,我们将探讨"this"在JavaScript中的各种用法和应用场景。 首先,我们要明白"this"的基本概念。在JavaScript中,"this"引用的是函数调用时的执行上下文...

    JavaScript this keyword

    Study note on htis keyword in JavaScript

    Javascript this 函数深入详解

     本文对Javascript this函数进行详细介绍,及知识的总结整理,彻底明白js this 函数该如何使用。 this 代码函数调用时, .1直接调用函数则为this则指向window对象 .2类调用时候指向这个类 .3 方法.apply(obg) ;...

    JavaScript This指向问题详解

    这篇文章主要介绍了JavaScript This指向问题详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 各位小伙伴在面试中被面试官问道this指向问题一定不少吧,同时...

    javascript中onclick(this)用法介绍

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

    asp.net常用的javascript弹出窗口代码

    this.Response.Write("&lt;script language='javascript'&gt;window.close();&lt;/script&gt;"); ``` 这段代码的功能是关闭当前打开的窗口。通常用于用户完成某个操作后自动关闭当前窗口的情形。 #### 关闭父窗口 ```...

    JavaScript this 深入理解

    JavaScript中的`this`关键字是语言的核心特性之一,用于在函数执行上下文中引用当前对象。它在JavaScript中的行为可能与其他面向对象的语言(如Java或C++)中的`this`有所不同,因此理解其工作原理至关重要。 首先...

    javascript在PDF文档中的使用指南

    ### JavaScript在PDF文档中的使用指南 #### 一、引言 随着互联网技术的发展与进步,PDF文档因其良好的兼容性及可移植性而被广泛应用。在众多功能中,JavaScript的集成使得PDF文档具备了动态交互能力,极大地提升了...

    非常好的javascript原理资源,分享出来.zip

    2.JavaScript this 3.JavaScript 闭包 4.JavaScript 事件 5.javascript 跨域 6.javascript 命名空间 Oject-Oriented 1.JavaScript Expressive 2. Interfaces 3.Introduction 4. Inheritance 5.AOP Jquery ...

    javascript的基础语法,面向对象的实现和设计模式实现

    2.JavaScript this 3.JavaScript 闭包 4.JavaScript 事件 5.javascript 跨域 6.javascript 命名空间 Oject-Oriented 1.JavaScript Expressive 2. Interfaces 3.Introduction 4. Inheritance 5.AOP Jquery ...

    JavaScript this 关键字

    JavaScript this 关键字 面向对象语言中 this 表示当前对象的一个引用。 但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。 在方法中,this 表示该方法所属的对象。 如果单独使用,this ...

    原生javascript实现加载更多效果

    ### 原生JavaScript实现加载更多效果 在现代Web开发中,“加载更多”是一种非常常见的交互方式,尤其是在数据量较大的情况下。本篇文章将基于提供的代码片段来深入解析如何使用原生JavaScript来实现“上拉加载更多...

    javascript this详细介绍

    JavaScript 中的 `this` 关键字是一个非常核心的概念,它的指向依赖于函数的调用方式,而非定义方式。理解 `this` 的指向对于编写可预测的 JavaScript 代码至关重要。 在全局作用域中,`this` 指向全局对象,对于...

    Javascript的this详解

    JavaScript中的`this`关键字是一个非常重要的概念,它用于在函数执行时引用当前上下文的对象。在JavaScript中,`this`的绑定遵循四个主要规则:默认绑定、隐式绑定、显式绑定和new绑定。让我们逐一深入理解这些规则...

    用javascript写的一个计算器

    ### 使用JavaScript编写的计算器知识点解析 #### 一、Array.prototype.remove方法实现 在该计算器代码中,`Array.prototype.remove` 方法被定义为一个数组原型的方法,用于移除数组中的某个指定索引位置的元素。 *...

    JAVASCRIPT THIS详解 面向对象

    本文将深入探讨JavaScript中`this`关键字的多种使用场景,并对比其他面向对象语言中的`this`。 首先,了解`this`在传统的面向对象编程语言中的用途。在C++、C#、Java等语言中,`this`关键字被用于指向当前对象的...

Global site tag (gtag.js) - Google Analytics