`
mooring
  • 浏览: 96081 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

this 在函数执行时指向 学习笔记

阅读更多

Functions as object's Methods Invoked have one very important property: the object through which a method invoked become the value of the this keyword within the body of the method.


The Scope of this when function invoked
When a function is invoked as a function rather than as a method , the this keyword refers to the global object. Confusingly this is true even when a nested function is invoked( as function) within a containing method that was invoked as a method: the this keyword has one value in the containing function but(counterintuitively) refers to the global object within the body of the nested function.


javascript syntax does not allow you to assign a value to this.


Javascript The Definitive Guide 5th Edition 8.4 Functions as Methods

以上内容摘自javascript权威指南,当一个函数执行时是以对象的方法调用的,那么this指向调用方法的对象本身。如果函数是以函数的形式调用的,那么函数体内的this永远指向全局对象,浏览器端全局对象就是window了,嵌套函数也是如此。

以下面的代码为例:
var calc = {
	op1 : 1,
	op2 : 2,
	op3 : this.op1 + this.op2,
	calc1 : function () {
		return this.op1 + this.op2;
	},
	calc2 : function () {
		return this.op3;
	}
}
alert(calc.calc1());
alert(calc.calc2());
alert(calc.op3);
 
根据以上说明,想一下上面的的运行结果是什么 ?
以下为结果,请选择后可见
3
NaN
NaN
想到了吗?

author:mooring
date:2012/10/14
0
2
分享到:
评论

相关推荐

    c++学习笔记(个人学习时做的笔记)

    6. **this指针**:在类的成员函数中,`this`指针指向调用该成员函数的对象。 7. **类数据成员初始化**:C++11引入了默认成员初始化器,可以在类定义中直接初始化非静态数据成员。 8. **构造函数初始化列表**:构造...

    c++学习笔记.pdf

    当通过基类的指针调用虚函数时,会根据对象的实际类型在运行时动态绑定到正确的函数实现。 6. 关于预处理器指令define和const关键字的区别,主要体现在编译器处理时间和处理方式上。预处理器指令define在预编译时...

    JavaScript-学习笔记.docx

    函数执行时,会创建AO对象来保存局部变量和参数。 3. **变量声明**: - `var` 关键字用来声明变量,未声明就赋值的变量会被提升为全局变量。 - 在函数内部,未使用`var`声明的变量也会被提升到函数作用域,但不会...

    JAVA学习笔记

    此外,this关键字在无参构造函数中的作用通常是指向当前对象的实例。 Java的继承是面向对象编程的核心之一。继承格式使用extends关键字来表示子类继承父类。Java与C++的一个主要区别是,Java不支持多继承,而C++...

    JavaScript基础学习笔记

    * this 关键字:this 关键字的使用、this 关键字的指向等 * Math 对象:Math.random()、Math.floor() 等 * Date 对象:Date 对象的创建、日期格式的转换等 * 数组操作:数组的创建、数组的方法、数组的排序等 * 字符...

    MFC学习笔记

    在C++部分,this指针是每个成员函数的隐含参数,指向调用该函数的对象。为了避免头文件的重复包含,通常使用预编译指令`#ifndef`、`#define`和`#endif`。此外,理解MFC框架的组织结构也很关键,如`::`用于调用全局...

    我的javascript学习笔记

    根据提供的文件信息,可以看出这份“我的javascript学习笔记”主要涵盖了JavaScript中的几个关键概念和技术要点,包括正则表达式、AJAX以及一些JavaScript的核心语言特性。接下来将这些知识点进行详细的整理和解释。...

    javascript学习笔记.docx

    这篇学习笔记主要涵盖了JavaScript的基础语法和客户端JavaScript的相关知识。 1. **JavaScript基本语法**: - **变量声明**:未声明的变量尝试读取时会产生错误,而写入未声明的变量会创建一个全局变量。 - **...

    es6学习笔记

    它没有自己的`this`值,而是继承自父作用域,解决了`this`指向问题,尤其是在回调函数中。 4. **模板字符串** 使用反引号(`)创建的模板字符串可以方便地插入变量和表达式,如` `${name} is ${age} years old.`,...

    C++学习笔记

    - 当对象调用成员函数时,系统会隐式地传递一个指针`this`,指向当前对象。 - `this`指针使得不同对象能够正确调用自己的成员变量。 3. **拷贝构造函数**: - 当一个对象被用来初始化另一个对象时,需要使用拷贝...

    Java经典学习笔记

    Java是一种广泛使用的面向...以上是Java学习笔记中关于面向对象编程的关键概念,这些基础知识对于理解和编写Java代码至关重要。通过深入理解这些概念,开发者可以有效地组织代码,实现复用,以及创建复杂的应用程序。

    Javascript学习笔记之 函数篇(二) : this 的工作机制

    在JavaScript中,`this`关键字的使用与其他编程语言有明显区别,它的指向取决于函数被调用的方式。理解`this`的工作机制对于深入学习JavaScript及其原型继承模式至关重要。以下是`this`在JavaScript中五种不同情况下...

    前端基础学习笔记,pdf

    【前端基础学习笔记】 前端开发是构建网页或应用程序用户界面的关键部分,主要包括HTML、CSS和JavaScript这三大核心技术。这篇学习笔记涵盖了JavaScript的基础知识,以及与前端开发相关的其他重要概念。 ...

    ES6学习笔记.docx

    ES6学习笔记 ES6(ECMAScript 6)是JavaScript语言的最新版本,引入了许多新的特性和变化。在本文中,我们将介绍ES6的学习心得,包括ES6的三种命名方式、箭头函数的介绍和应用、ES6字符串模板、ES6中的for和Array...

    1_Vue学习笔记.pdf

    根据提供的文件内容,以下是关于Vue学习笔记的知识点总结: 一、Vue基础部分 1. el和data的两种写法 在Vue.js中,创建Vue实例时,可以通过两种方式指定el和data属性: - 对象式:直接在Vue实例化时,将el和data...

    java4android的学习笔记

    Java4Android 学习笔记涵盖了Java基础到面向对象编程的关键概念,这些都是开发Android应用时的基础。以下是这些知识点的详细说明: 1. **环境变量**:Path环境变量是系统寻找可执行文件的路径,而Classpath环境变量...

    c学习笔记以供学习交流

    C语言学习笔记旨在帮助初学者理解C语言的基本概念和语法特性。下面我们将深入探讨其中的一些关键知识点。 首先,我们来看一下定义和声明的区别。在C语言中,定义是指实际为变量分配内存空间并绑定名字的过程,例如`...

    java学习笔记.pdf

    ### Java学习笔记知识点总结 #### 第一章:Java语言入门 - **1.1 Java的诞生** Java由Sun Microsystems公司于1995年推出的一种可移植、面向对象的编程语言。最初的设计目标是为消费电子产品提供一种通用编程语言...

    JS学习笔记doc.rar

    这份“JS学习笔记doc.rar”压缩包包含了一份详细的学习资料,旨在帮助初学者快速理解和掌握JavaScript的核心概念与实践技巧。 1. **基础语法**:JavaScript的基础包括变量声明(var、let、const)、数据类型(如...

    net学习笔记及其他代码应用

    43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 答:会执行,在return前执行。 44.两个对象值相同(x.equals(y) == true),但却可有不同...

Global site tag (gtag.js) - Google Analytics