《js精粹》观感1

  最近新买了本《js精粹》,好书,对于js的讲解非常到位,在有一定js基础上,再看这本书,会收获很多,深刻很多!书籍将this指针分析的很透彻,分为的4种模式也很有新意。

  下面先谈谈this体会:

  方法调用模式:
    当一个函数作为一个对象的属性时,此函数就成为对象的一个方法,则在调用此方法时,方法内部的this指针被绑定为该对象。

  函数调用模式:
    函数不作为对象的属性,而是单纯作为一个函数运行,则函数内部的this指针与全局变量绑定(如window)。

  构造函数调用模式:
    函数作为构造函数时,使用new来调用函数,则会创建一个新对象,此对象会默认指向函数的prototype属性,即新对象可以直接访问函数的prototype所拥有的所有属性(包括函数),此时,函数内部的this指针是与新对象绑定。

  apply调用模式:
    函数.apply()时,函数内部的this指针与第一个参数绑定。第一个参数可以为null。

    使用时,就相当于直接运行func(),只是此func内部的this指针指向apply的第一个参数,func的参数被赋值为apply的第二个参数。

  总结:

    没有提到call函数,有点奇怪。

 

第二点:

  给类型赋值。赋值操作的步骤和定义类的原型方式相同。

  奇怪的一点是:对于Function,Object类型的赋值,可以直接通过Function.newAttr访问到,也能通过Function.prototype.newAttr访问到;但对于Number,String,Boolean类型,则必须通过Number.prototype.newAttr去访问。

 

第三点:

  闭包。这本书对于闭包的讲解,感觉说到点子上了,它说闭包访问内部函数所在上下文环境中的变量时,其实访问的是真实变量,不是变量的一份拷贝。

  这样,当在内部函数中多次修改了变量时,最终的变量结果是等于最后一次修改结果的。这个要点在事件处理函数时,最容易让人迷惑。其实就是因为使用的是真实变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值