js中this关键字的指向问题

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__属性中

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

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20659385/article/details/49926761
个人分类: 前端
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭