我有以下内容:
function NumberFormatter(){
...
function helper(){
...
var tempvar;
...
}
function format(num){
...
helper()
...
}
}
//there is a single instance of FT
var FT = new NumberFormatter()
FT.format(123)
对象的状态没有改变。
在多线程环境下,如果从两个不同的位置几乎同时调用
format()
,那么这段代码会失败吗?是否有一种简单的方法来锁定对象,还是持有1000个实例更好?
答案:(总结所有发布的内容...)
- 不会失败(因为JavaScript中没有真正的多线程)。 - 没有锁定对象的方法,也不需要。 - 可以只有一个实例。不需要创建1000个实例。
对于那些不相信的人,这是证明代码:
<script type='text/javascript'>
function get_random_color() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ ) {
color += letters[Math.round(Math.random() * 15)];
}
return color;
}
setInterval('document.getElementById("a").style.backgroundColor=get_random_color()', 10)
//*** setInterval() stops when heavy calculations are done ***//
document.getElementById("b").onclick = function(){
for(var i=0;i<10000000; i++){
Math.atan2(Math.round(1000))
}
}
</script>
setTimeout
,系统会将它们排队吗? - Andrey