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

JavaScript中,with中的为什么不能给对象添加属性?

JavaScript中,with中的为什么不能给对象添加属性?

饮歌长啸 2019-02-12 17:21:49
考虑一下代码:function setName(obj,new_name){    with(obj){        name=new_name;    }}var person={};setName(person,"Amy");console.log(person);其输出结果却是一个空对象,里面并没有name属性。但是在全局作用域内却能找到这个name。但是如果这么写:function setName(obj,new_name){    obj.name=new_name;}var person={};setName(person,"Amy");console.log(person);却能得到具有name属性的对象。为什么?二者区别到底在哪里?我理解的的是with中的name=...应该等价为obj.name=...才对,既然这样,不就和第二个没有区别了吗?但为什么运行结果却大相径庭呢?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 403 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号