例子,javascript with语句用法的例子。
javascriptwith 语句的使用方法
javascript 有个 with 关键字, with 语句的原本用意是为逐级的对象访问提供命名空间式的速写方式. 也就是在指定的代码区域, 直接通过节点名称调用对象
用过 java 和 .net 的朋友对包或命名空间的概念应该不会陌生, 正因为有这个概念, 使代码的简洁易读得到了保证。
不知 javascript 设计之初是如何定位 with 语句的, 个人觉得它们之间有一定的相似度。
例如:
利用 with 语句,可以写为.
看起来很美妙, 却存在致命的缺陷。
以下使用with语句进行一些测试,javascript with语句的一些例子。
1. 在 with 语句内部通过内部变量修改数值
var root = {
branch: {
node: 1
}
};
with(root.branch) {
node = 0;
// 显示 0, 正确!
alert(node);
}
// 显示 0, 正确!
alert(root.branch.node);
2. 在 with 语句内部通过对象节点修改数值
var root = {
branch: {
node: 1
}
};
with(root.branch) {
root.branch.node = 0;
// 显示 0, 正确!
alert(node);
}
// 显示 0, 正确!
alert(root.branch.node);
经过测试 1 和测试 2, 乍看没什么问题, 但是... 请看测试 3.
3. 在 with 语句内部通过对象父节点修改数值
var root = {
branch: {
node: 1
}
};
with(root.branch) {
root.branch = {
node: 0
};
// 显示 1, 错误!
alert(node);
}
// 显示 0, 正确!
alert(root.branch.node);
由上面的测试 3 可知, with 语句内部的节点父节点修改后, 不会同步到节点本身。
不能保证内外数值的一致性. 这是可能成为项目里面隐藏性很高的 bug.
那我们该怎么办呢? 接受那很长的一串逐级访问, 还是另有他法?
可以通过别名引用父节点的方式来调用节点对象。
例如:
var root = {
branch: {
node: 1
}
};
var quote = root.branch;
quote.node = 0;
// 显示 0, 正确!
alert(root.branch.node);
javascript 中with的用法
方法:with (<对象>) <语句>;
with 语句可以用来引用某个特定的对象中已有的属性,但是不能用来给对象添加属性,要给对象添加属性,还要明确的引用该对象。
例如:
通常用来缩短特定情形下必须写的代码量:
例子:
当使用with时就可以写成这样:
javascript with 语句
with 语句的作用是将代码的作用域设置到一个特定的对象中。
例如:
可以将上面的三段赋值操作改写成:
以上通过实例介绍了javascript with语句的用法,希望对大家有所帮助。