美文网首页
javascript里面的this指向

javascript里面的this指向

作者: 一只特立独行的猪2019 | 来源:发表于2019-08-13 21:09 被阅读0次

首先我们看教科书里写的:this指的是函数运行时所在的环境。

接下来我们要弄清楚为什么会这样?也就是说,函数的运行环境到底是怎么决定的?举例来说,为什么obj.foo()就是在obj环境执行,而一旦var foo = obj.foo,foo()就变成在全局环境执行?

所以要理解this指向其实是要弄清楚方法的运行环境。

varobj={foo:1}

当我们将一个对象赋值给一个变量时,JavaScript 引擎会先在内存里面,生成一个对象{ foo: 1 },然后把这个对象的内存地址赋值给变量obj。

也就是说对象其实是一个地址,我们要拿到对象里的变量和方法,先要从内存里拿到地址,然后再从该地址读出原始的对象,返回属性。

varobj={foo:function(){}}

当对象属性值是一个方法时,引擎会将函数单独保存在内存中,然后再将函数的地址赋值给对象foo属性的value属性

普通变量:{foo:{[[value]]:5}}

属性值为方法时:{foo:{[[value]]:函数的地址...}}

由于函数是一个单独的值,所以它可以在不同的环境(上下文)执行

varf=function(){};

varobj={f:f};

// 单独执行

f()

// obj 环境执行

obj.f()

相关文章

  • javascript里面的this指向

    首先我们看教科书里写的:this指的是函数运行时所在的环境。 接下来我们要弄清楚为什么会这样?也就是说,函数的运行...

  • this、call和apply

    this JavaScript里面的this总是指向一个对象,而具体指向哪个对象是在运行时基于函数的执行环境动态绑...

  • javascript this 指向

    我在文章《javascript 执行上下文》中介绍了 javascript 代码在执行时,会相应地创建对应执行上下...

  • javascript this指向

    首页,js默认的对象是Window,调用一个函数是,如果不去改变它的调用对象的话,this基本上都会指向Windo...

  • 关于js函数中this的指向的问题

    @(javascript)[JavaScript中this的指向] 关于js函数中this的指向的问题 javas...

  • JavaScript中,this的绑定规则

    对于 JavaScript 新手来说,this 是非常基础同时也难以理解的知识点。 比如下面的代码,this 指向...

  • JavaScript_this指向

    this的指向是在函数执行的时候确定的;同一个函数由于调用的方式不同,this的指向也会发生变化; this的几种...

  • JavaScript this的指向

    在 JavaScript 中 this 取什么值,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了,因为...

  • JavaScript--this指向

    this存在的场景1)作为普通函数中的this2)使用call apply bind3)作为对象方法被调用4)在c...

  • JavaScript之this指向

    this 实际上是在函数被调用时发生的绑定,它指向什么完全取决于函数在哪里被调用。 this绑定规则: 默认绑定,...

网友评论

      本文标题:javascript里面的this指向

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