javaScript之this全面解析(1)

老早就想写博客,但是一来文采不行,二来更加不知道写什么(不知道该发表些什么内容)。这第一次写的不是很好,请各位大神见谅。

这是我目前看的一本书,书名叫你不知道的javaScript。在这里感谢我的表哥。推荐下表哥的书山有路qq群:452450927

我们进入正题吧

1、为什么我们要使用this??

首先看下面的代码 

如果我们不适用this,那就需要给identify和speak显式的传入一个上下文对象, 如下:

然而,this提供了一种更优雅的方式来隐式“传递”一个对象引用,因此可以将API设计的更加简洁并且易于复用。

随着你的使用模式越来越复杂,显式传递上下文对象会让代码变的越来越混乱,使用this则不会这样

1.2this的绑定

书中用了一句话来解释this的绑定,原话是这样的  this实际上是在函数被调用时发生的绑定,他指向什么完全取决于函数在哪里被调用。

好吧我们来上代码

我们想要记录一下函数foo被调用的次数

foo函数中的console.log输出了4次,证明foo函数确实被调用了4次,但是 foo.count任然是0.显然从字面意思来理解this是错误的(指向函数本身),好。让我们来根据

this绑定的原话来看下,这里第一次调用foo函数,即foo(6),然而 foo函数是全局函数,即window下的对象调用的,所以这里的this绑定的是window对象,所以这里隐式

的声明了window.count,然而并没有对他进行赋值,所以最后window.count是NaN.

这里我们如何使用this呢?看下面代码

使用call(..)能确保this指向foo函数或者使用apply(obj,array).

 

posted @ 2017-05-22 15:56  Vate  阅读(157)  评论(0)    收藏  举报