this的四种用法!

经常会有人问到this的用法,其实简单来说,this有四种应用场景,分别是在构造函数上、对象属性中、普通函数中、call和apply方法中。

首先我们来看第一种:在构造函数中的用法

第二种是在在对象属性中:

第三种:

在代码的执行中我们发现根本取不到“alice”,而是打印出undefined。原因就是当我们这样作为一个普通函数执行的时候,this指向window对象的,而window对象下找不到name这个属性,于是就打印出undefined。如果是找不到一个属性,就会返回undefined;而找不到一个变量,则会返回“xxx is not defined”。

 

我们再来看最后一种:在call和apply中

其实我们可以把call和apply当成一种特殊的执行方法。可以叫它“能自定义this指向的执行方法”.就是说当我们直接来一个f1()的时候,它的this默认为window

 

posted @ 2018-02-24 15:49  alice_can  阅读(853)  评论(0编辑  收藏  举报