js中的this原理

1  内存的数据结构  var obj = {foo: 5};

存储过程: js引擎会先在内存里,生成一个对象{foo: 5}, 然后把这个对象的内存地址赋值给变量obj

变量obj是一个地址, 如果要读取obj.foo  引擎从obj拿到内存地址,然后再从地址独处原始的对象,返回f00属性

原始对象的保存结构:

2  如果对象的某个属性值是函数呢   var obj = { foo: function(){}};

存储过程: 引擎将函数单独保存在内存中, 然后将函数的地址赋值给foo属性的value 值 

3  环境变量

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

js允许在函数体内部,引用当前环境的其他变量, 该变量由运行环境提供

所以, this就出现了, 设计的目的就是在函数体内部,指代函数当前的运行环境

obj.foo() 是通过obj找到foo,所以就是在obj环境执行

 

 

总结: this 代表了当前函数的执行上下文, 方便开发者在函数中使用上下文变量

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值