nto*_*end 4 javascript with-statement
我仍然觉得with关键字有点...... 神秘.
简而言之,with表现如下:
with (obj) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
这会添加obj到作用域链的头部,然后执行with-block.当块完成时,它obj从作用域链的头部移除.
根据MDC,这可以让你做类似的事情
var a, x;
var r = 10;
with(Math) {
a = PI * r * r;
x = r * cos(PI / 2);
}
Run Code Online (Sandbox Code Playgroud)
所以我可以直接引用Math- 像PI- 的属性,不用多说Math.PI.哪个好,但有点无用.
任何人都可以提供有趣用法的例子with吗?
使用for循环内部函数的标准闭包解决方案的替代方法:
<a href="#">blah</a><br>
<a href="#">blah</a><br>
<a href="#">foo</a><br>
<script>
(function() {
var anchors = document.getElementsByTagName('a');
for ( var i = anchors.length; i--; ) {
var link = anchors[i];
with ({ number: i }) {
link.onclick = function() {
alert(number);
};
}
}
})();
</script>
Run Code Online (Sandbox Code Playgroud)
感谢nlogax提供我几乎扯下一个解决方案:
使用Javascript臭名昭著的循环问题?
这是标准解决方案:
<script>
(function() {
var anchors = document.getElementsByTagName('a');
for ( var i = anchors.length; i--; ) {
var link = anchors[i];
(function(i) {
link.onclick = function() {
alert(i)
}
})(i);
}
})();
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
414 次 |
| 最近记录: |