美文网首页
this 有趣探索

this 有趣探索

作者: 轩辕无枫 | 来源:发表于2017-08-02 17:00 被阅读0次

function  普通执行  this指向的是window

而new的时候    this  是指向这个实例的

要不停的看基础才行。  不停的看  不停的看

这里需要说下  call  和apply    当你做某个应用时,需要把一个function中的this  绑定到一个  具体的Object上面,来执行这个funciton,那么你该怎么做?

function lei(){

     alert(this.name.toUpperCase())

}

var test = {

   name:'dinglei'

}

lei.call(test) //DINGLEI

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

巨大的需要注意的地方:this是在运行时进行绑定的,并不是编写时帮绑定的。它的具体指向,是你当时如何运行这个函数决定的。

普通执行

function test (){console this.a}

对象绑定

obj = {name:test,a:'ddd'}   obj.name()

隐试绑定和显示绑定。。      最后还有个显示变种硬绑定。

Function.prototype.bind  就是硬绑定。。      返回的是一个已经绑定死this的函数。。。    啦啦啦啦啦啦啦

那么这是怎么实现的?  其实bind  就是返回个函数  而这个函数里面是  apply在干活,   所以一直只能是  绑定的那个obj在那里哦

// 简单的辅助绑定函数

function bind(fn, obj) {

  return function() {

     return fn.apply( obj, arguments );

  };

}

new  绑定

最后做个总结:如何识别this的绑定

判断 this

现在我们可以根据优先级来判断函数在某个调用位置应用的是哪条规则。可以按照下面的

顺序来进行判断:

1. 函数是否在 new 中调用( new 绑定)?如果是的话 this 绑定的是新创建的对象。

var bar = new foo()

2. 函数是否通过 call 、 apply (显式绑定)或者硬绑定调用?如果是的话, this 绑定的是

指定的对象。

var bar = foo.call(obj2)

3. 函数是否在某个上下文对象中调用(隐式绑定)?如果是的话, this 绑定的是那个上

下文对象。

var bar = obj1.foo()

4. 如果都不是的话,使用默认绑定。如果在严格模式下,就绑定到 undefined ,否则绑定到

全局对象。

var bar = foo()

就是这样。对于正常的函数调用来说,理解了这些知识你就可以明白 this 的绑定原理了。

不过……凡事总有例外

this 绑定的应用:

1.函数参数柯里化

function foo(a,b) {

    console.log( "a:" + a + ", b:" + b );

}

// 把数组“展开”成参数

foo.apply( null, [2, 3] ); // a:2, b:3

// 使用 bind(..) 进行柯里化

var bar = foo.bind( null, 2 );

bar( 3 ); // a:2, b:3

相关文章

  • this 有趣探索

    function 普通执行 this指向的是window 而new的时候 this 是指向这个实例的 要不停的看...

  • 有趣的探索

    今天幼儿园开展了半日观摩活动,请来了专家老师指导、点评,让我受益匪浅。幼教这个行业,真的需要不停地学习,现在的教育...

  • 探索成为有趣的人

    我从小就认为我是没成色、不讨喜的人。记忆中我迷茫地站在灰蒙蒙的街上,不知道该把锅盘还给哪家;弟弟出生时,别人来...

  • 2018-07-13

    《一节有趣的作文课》 我像触电般的对作文感上了兴趣,像探索未知生物似的探索这堂有趣的作文课。——崔艺潇(火焰) ...

  • 未知

    充满未知地探索与创造,比对生活有了答案更有趣.

  • 没有自我觉知的能力,知识都是白搭

    (1)自我觉知 向内探索自己与向外探索世界同样有趣,多元智能中有一项能力叫intrapersonal intell...

  • 有趣的探索之旅

    前几篇我忍不住吐槽了公司的招标流程,大事不糊涂,小事全迷茫。 据说去年公司老板也吐槽过这个招标流程搞得太复杂。不过...

  • 干花制作指南

    我是人鱼说,和我一起探索有趣好玩的自然世界吧!

  • 要好好活着

    这个世界真的有趣,神秘又残酷温柔。 真的想永远活着,才能探索下去。

  • 如果手机要重装

    喜欢探索新鲜APP,记录下今天探索的几个有趣的APP吧。 1. Sketch AR 可以将画作通过AR投影在平面上...

网友评论

      本文标题:this 有趣探索

      本文链接:https://www.haomeiwen.com/subject/xtrylxtx.html