<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>js-避免使用with</title>
</head>
<body>
<script>
window.onload = function() {
var test = function(obj, name) {
with(obj){
alert(obj.name); // obj
alert(name); // obj 哈哈,看到问题所在了吧~O(∩_∩)O~
}
};
test({name : "obj"}, "par");
};
</script>
<p>
★★★关于 with 必须知道的是★★★:
1. JS作用域可表示为高效的内部数据结构,变量查找非常快速。
但由于with代码块需要搜索对象的原型链来查找with代码块里的所有变量,
因此,其运行速度远远低于一般的代码块
2. 外部对象的变动引起的函数行为的不确定性(详见<script>里的代码)
</p>
</body>
</html>