JavaScript的with 语句的使用方法

来源:爱站网时间:2019-11-05编辑:网友分享
我们应该对Java都是很熟悉的,其实它的简单性和可读性得到了保证,下面就让爱站技术频道小编带大家一起来学习JavaScript的with 语句的使用方法吧,希望对你有帮助。

我们应该对Java都是很熟悉的,其实它的简单性和可读性得到了保证,下面就让爱站技术频道小编带大家一起来学习JavaScript的with 语句的使用方法吧,希望对你有帮助。

如:

 

apple.banana.candy.dog.egg.fog.god.huh.index = 0;
doSomething(apple.banana.candy.dog.egg.fog.god.huh.index);


利用 with 语句, 可以写为以下代码.

 

 

 


with(apple.banana.candy.dog.egg.fog.god.huh) {
c = 0;
doSomething(index);
}


看起来很美妙, 却存在致命的缺陷. 下面我们来进行一些小测试吧.

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语句,很多人不会知道这个功能,其实有都很好我们根本用不上它。

上一篇:Chrome Form多次提交表单问题的解决方法

下一篇:总结jQuery 常见操作实现方式和常用函数方法

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载