js中this关键字的指向问题

原创 2015年11月19日 13:55:05

1.this关键字

this 是一个关键字,不同于普通变量,我们不能对它进行赋值等操作,但是我们可以通过call、apply方法和with语句有意识地让它指向某个对象。


2.表层分析

全局函数中

非严格模式下,this指向window对象,而严格模式下则为undefined

对象方法中

此时this指向该对象

构造函数中

此时this指向实例对象

3.实质

以前都是按2中的方法去强行记忆的,知道看到这样一句话——“this始终说明当前方法属于谁”,顿觉豁然开朗。

全局函数

全局函数本身是全局对象window的方法,故此时this指向于window

对象方法

此时指向该方法的父对象

构造函数

这里可能有点费解,但是我们可以把new关键字的操作顺序分解成如下步骤:
a.创建新对象;
b.将构造函数添加成该新对象的方法并执行(这里可以理解为调用了call/apply方法);
c.将构造函数的prototype属性添加到新对象的__proto__属性中

如此一来,感觉脉络一下子清晰了~

版权声明:本文为博主原创文章,未经博主允许不得转载。

JS:this关键字的指向

关于this的指向有两点判断原则: 当函数被直接调用时this指向全局对象(window)。 当函数被当作某个对象的方法来调用时(即通过“.”或“[]”来调用时),this指向该对象(调用方法的...

js中对this关键字的理解

this是Javascript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在**函数内部使用**。 比如, 理解this指代什么的关键点在与: 看这个this指的是局部对象还是全局...

JS中this关键字的区别

Javascript中,不同函数,this关键字指代的区别

javascript面试题 之 js中this关键字的用法

随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。 下面分四种情况,详细讨论this的用法。 情况一:函数调用 这是函数的最通常用法,属...

nodejs中this关键字的问题

再分析具体内容之前,必须要好好阅读以下以下两篇blog 学习Javascript闭包(closure) Javascript的this用法 这两篇文章是阮一峰老师对Javascript的闭包和this...

构造函数,this关键字,及静态方法,静态变量成员变量,静态代码块,构造代码块的问题

构造函数如果没有被显式的声明,那么对象在创建时候会调用默认的空参数的构造方法;构造方法的名称必须和类名相同;构造方法可以被重载,一个类中可以存在多个具有不同参数的构造方法,构造方法没有返回值类型,没有...

js闭包中this的指向问题及三种解决方法

下面是一个问题,对象方法中定义的子函数,子函数执行时this指向哪里? 三个问题:     (1)以下代码中打印的this是个什么对象?     (2)这段代码能否实现使myNumber.val...

js中this的指向问题

1 函数四种调用模式: // 1 函数调用模式 // 2 方法调用模式 // 3 构造函数调用模式 // 4 借用方法调用模式(上下文调用模式) // cal...

如何理解JS中的this指向问题

如何理解JS中的this指向问题this中的最终指向的是那个调用它的函数(一定要记住这句话,但是这句话仍然有问题,下文会做解释) this在函数式编程和面向对象编程的过程中,能帮助简化我们的代码,...

理解js中this的指向问题

在前端的飞速发展的过程中,各种框架层出不穷,但是当大家看到这些框架的源码时,大家也许会发现很多框架都有this 这个问题,由此看来this的指向是多么的重要,但是关于this问题许多人对于他的指向问题...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js中this关键字的指向问题
举报原因:
原因补充:

(最多只允许输入30个字)