考虑一下代码: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=...才对,既然这样,不就和第二个没有区别了吗?但为什么运行结果却大相径庭呢?
添加回答
举报
0/150
提交
取消
