日期:2014-05-16 浏览次数:20364 次
function myFunction() { if (typeof value1 != "undefined") {//没有这一句,value1好像会有不同的整数值。 return; } var i = 0; value1 = setInterval(function () { if (i == 0) { //function1 i++; } else { //function2 i--; } }, 1000); } function clear_myFunction() { if (typeof value1 == "undefined") { return; } clearInterval(value1); delete value1; } //value1没有预先定义 //现在我要执行几十次myFunction,代码里面不同的地方只有value1,value2,value3,…… //如何把一个没有定义的变量传到myFunction里面,让它成为全局变量 //clear_myFunction也能根据参数删除定时器的全局变量
var MyClass = function(){ this.val = 0; } MyClass.prototype.myFun = function(){ var i = 0; this.val = setInterval(function () { if (i == 0) { //your funciton i++; } else { //your funciton i--; } }, 1000); } MyClass.prototype.clearFun = function(){ clearInterval(this.val); } window.onload = function(){ //1. 需要实例化 var myInstance1 = new MyClass(); var myInstance2 = new MyClass(); var myInstance3 = new MyClass(); var myInstance4 = new MyClass(); . . //这样就可以了啊,和C#的面向对象思想一样的。 // MyClass = {.....} 这种方式不行,因为MyClass.val 相当于是static field, // 是和类相关的,而不是和实例相关的。 }
------解决方案--------------------
楼上可以,每一个new出来的对象内部都有一个属于自己的val,因此不需要传值的
var myInstance1 = new MyClass();
myInstance1.myFun();// 运行
myInstance1.clearFun();// 清除