`
mooring
  • 浏览: 95323 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    Javascript学习笔记之函数篇(五) : 构造函数

    在构造函数体内,this 指向新创建的对象。如果构造函数体内没有显示的 return 表达式,那么我们就默认返回 this,也就是新建的对象。 代码如下: function Foo() {  this.bla = 1; } Foo.prototype.test = function...

    JavaScript中this用法学习笔记

    1、this指向函数自身 2、this指向函数词法作用域 我们可以看以下一段代码: function test() { test.a = 1; this.a = 2; console.log(test.a); console.log(this.a); console.log(test.a === this.a); } test(); ...

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

    当在全局作用域中使用 this,它指向全局对象。 这里详细介绍下全局对象: 全局对象(Global object) 是在进入任何执行上下文之前就已经创建了的对象; 这个对象只存在一份,它的属性在程序中任何地方都可以访问,全局...

    Java学习笔记(必看经典)

    JAVA的面向对象编程--------课堂笔记 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物皆对象) 所有的事物都有两个方面: 有什么(属性):用来描述对象。 能够做...

    Javascript中call与apply的学习笔记

    先看MDN中对于call的解释 call() 方法在使用一个指定的this值和若干...需要注意的是,指定的this值并不一定是该函数执行时真正的this值,如果这个函数处于非严格模式下,则指定为null和undefined的this值会自动指向全局

    javascript-learning-road:js学习笔记

    3.constructer里面的这个指向实例对象,方法里的this指向这个方法的调用者。 新执行过程 1.在内存中创造一个空对象。 2.让这个指向这个空对象。 3.执行构造函数里的代码,给这个新对象添加属性和方法。 4.返回这个...

    JavaScript 学习笔记(六)

    工厂函数中如果一个属性是方法的话,可以在工厂函数的外面定义对象的方法,然后通过属性指向该方法,从而可以避开每次都调用自己的属性方法,这样做使得每个对象都共享了同一个函数。 示例: 代码如下: [removed] /...

    angularjs:started默认情况下,在启动AngularJS应用程序时会加载ng模块

    angularjs学习笔记—工具方法 2017-05-09 04:01:49 -0700 AngularJS 1.angular.bind(self, fn, args) 作用:返回一个新的函数,绑定这个函数的this指向self 参数: self:新函数的上下文对象 fn:需要绑定的函数 ...

    作为前端,你需要懂得javascript实现继承的方法

    在ES6之前,javascript不跟其他语言一样,有直接继承的方法,它需要借助于构造函数+原型对象模拟实现继承。现在我们可以利用ES6的extends方法实现...调用这个函数,并且修改函数运行时的this指向 fun.call(thisArg, ar

    c++基础教程,简洁扼要

    适合新手的教程,我自己也在学,以下是部分学习笔记 69 函数指针 70 动态内存分配 Dynamic memory pointer = new type pointer = new type [elements] 第一个表达式用来给一个单元素的数据类型分配内存。第二个...

    关于js里的this关键字的理解

    this关键字在c++,java中都提供了这个关键字,在刚开始学习时觉得有难度,但是只要理解了,用起来就方便多了,下面通过本篇文章给大家详解js里this关键字的理解。 关于this,是很多前端面试必考的题目,有时候在网上...

Global site tag (gtag.js) - Google Analytics