JS实现模拟多线程,本文使用到js的闭包特性(4)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> 实例4 </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
var nodeConfig = {};
nodeConfig.ticks = 4 * 1000; //刷新频率
nodeConfig.msg = "运行中";
function Node(id,name,cn){
this.id = id;
this.name = name;
this.cn = cn;
}
//节点数组可从服务器端生成
var nodes = new Array();
nodes[0] = new Node(1,"node1","节点1");
nodes[1] = new Node(2,"node2","节点2");
var NodeManager = function(newObj){
var pro=this;
for(var i in newObj){ //将配置转变为自身属性
pro[i] = newObj[i];
}
};
NodeManager.prototype = {
showStaus:function(node){
alert(node.name + ":" + this.msg);
},
start:function(){
var len = nodes.length, ins = this; //将实例赋值给变量,以便在此方法中能够使用
for(var i = 0; i < len; i++){
var f = function(idx){
setInterval(function(){ ins.showStaus(nodes[idx])},ins.ticks);
}
f(i);
}
}
}
var m = new NodeManager({
ticks:nodeConfig.ticks,
msg:nodeConfig.msg
});
m.start();
//-->
</SCRIPT>
</BODY>
</HTML>
至此,才终于将程序划上稍显完美的句号。
参考文章:
深入理解JavaScript闭包(closure)
http://www.felixwoo.com/archives/247
一个js闭包的小例子
http://blog.pchome.net/article/182960.html
js对象属性类型
http://orn827.blog.163.com/blog/static/1113902032009681365891/
源码下载:/Files/hellofox2000/js_thread.rar