网页特效 的with 关键字, with 语句的原本用意是为逐级的对象访问提供命名空间式的速写方式. 也就是在指定的代码区域, 直接通过节点名称调用对象.
with(object){
code;
}
<html>
<head>
<title>A Simple Page</title>
<script language="JavaScript">
<!--
inp1 = 1;
inp2 = 2;
inp3 = 3;
with (Math)
{
alert("The largest number entered was " + max(inp1, inp2, inp3));
alert("The smallest number entered was " + min(inp1, inp2, inp3));
}
// -->
</script>
</head>
<body></body>
</html>
实例二
<html>
<script language="JavaScript">
<!--
var myNum = 25;var myE, mySin, mySqrt;
with (Math) {
myE = E;
mySqrt = sqrt(myNum)
document.writeln(mySqrt);
mySin = sin(PI/myNum);
document.write(mySin);
}
-->
</script>
</html>
with 语句内部通过对象父节点修改数值
var root = {
branch: {
node: 1
}
};
with(root.branch) {
root.branch = {
node: 0
};
// 显示 1, 错误!
alert(node);
}
// 显示 0, 正确!
alert(root.branch.node);
注意:with 语句内部的节点父节点修改后, 不会同步到节点本身. 也就是说, 不能保证内外数值的一致性. 这是可能成为项目里面隐藏性很高的 bug.