为了账号安全,请及时绑定邮箱和手机立即绑定

with()和call(),apply()存在的意义是否一样?(注意是存在的意义)

with()和call(),apply()存在的意义是否一样?(注意是存在的意义)

呼啦一阵风 2019-05-22 18:17:05
在JavaScript中,with语句的作用是将代码的作用域设置到一个特定的对象中。那么它存在的意义是否和call和apply一样?如果一样,在什么情况下分别使用哪一种呢?如果存在的意义不一样,又不一样在哪里呢?
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

我觉得从意义上来讲是一样的。
with改变的上下文是定义的时候创建好的是作用域链
call,apply改变的上下文是this指向是执行的时候获取是原型链
然后说说分别使用哪一种。当然是在你必须用的时候用了呀,不过我觉得不会存在这样一个时候的。比如with改变的上下文,你创建一个function就可以改变自己的了。问题不大吧。或者说你重新命名几个变量下面再去用,问题不大吧。无非就是用一个对象来替换了当前的上下文环境。
再说call,其实你也可以用一个function来把数据解析。也可以直接把这个方法放在新的对象上去跑。无所谓的,当然把this赋值给一个变量,然后用这个变量去访问好像问题也不大啊。
不要为了用什么而去用,而是我需要什么。
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 400 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信