理解js作用域原型链和执行上下文

作用域跟函数紧密相关。每个函数就是一个作用域,同时包括一个全局的作用域。作用域有上下级关系,子作用域可以访问到父作用域的变量跟函数,但是父作用域无法访问到子作用域的变量跟函数(这里说的访问是直接访问,通过闭包是可以间接访问到的)。

js中一切都是对象,除了基本值类型之外。其他都是object。函数是一种特殊的对象,因为对象都是由函数生成的。

执行上下文,每执行一次函数便会产生一个新的执行上下文。浏览器中全局的执行上下文是window。每执行一次函数便有新的执行上下文入栈。理想的环境中,从window执行上下文,到整个代码执行完成后,上下文都应该是压栈出栈的。但是因为有闭包的存在,可能存在函数执行完了,却没有被释放掉的情况。注意:每执行一个函数都会产生一个执行上下文。执行上下文可以理解为一片内存区域,每次函数执行都要为之开辟一片内存区域。内存区域里面存放的变量等构成了一个执行上下文。

在一个对象中,寻找某个属性或方法时,会在对象的函数定义中查找,如果找到则停止寻找,否则在它的原型中寻找。如果原型是一个对象,那么将循环上述的步骤,在原型中寻找直到Object为止。如果没找到则会抛出异常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值