原理:如下代码所示。在类中必须指定myclass.last中的myclass请问应该怎么做让这个JsClass能够不依赖于它实例化的对象。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JsClass</title>
</head>
<script language="javascript">
function JsClass(){
    this.num=0;
    this.timeID=null
    this.run=function(){this.timeID=setInterval(function(){myclass.last()},300)}
    this.last=function(){if(this.num>10){clearInterval(this.timeID);alert('myclass循环结束')} else {document.getElementById("num").innerHTML=this.num;this.num++}}
}
var myclass=new JsClass();
</script>
<body>
<button onclick="myclass.run()">开始</button>
<div id="num"></div>
</body></html>

解决方案 »

  1.   

    如果把myclass.last()换成this.last() 会报错
      

  2.   

    你要写成this.lash()
    那么你的定义就要变了.
      

  3.   

    我最后想达到的目的是:
    var myclass1=new JsClass(); myclass1.run();
    var myclass2=new JsClass(); myclass2.run();
    var myclass3=new JsClass(); myclass3.run();类那里该怎么定义?
      

  4.   

    还是没明白你的意思.
    究竟是要this.last()还是myclass1.run()?
      

  5.   

    想要的就是类定义里的this.last不依赖实例化的对象名myclass。呵呵
      

  6.   

    this.run=function(){this.timeID=setInterval(function(){self.last()},300)}setInterval是在window的作用域定义的.
      

  7.   

    <body>
    <div id='ss'></div>
    <div id="num"></div>
    <script language="javascript">
    function $(Id){return document.getElementById(Id)};
    function addListener(element,e,fn){ element.addEventListener?element.addEventListener(e,fn,false):element.attachEvent("on" + e,fn)}; 
    function create(elm,parent,fn){var element = document.createElement(elm);if(fn)fn(element);parent.appendChild(element);};
    function JsClass(parent){
    var self=this;
    this.num=0;
    this.timeID=null;
        create('button',parent,function(obj){
    obj.value = "确定";
    addListener(obj,'click',function(){self.run()})
    })
    this.run=function(){self.timeID=setInterval(function(){self.last()},300)}
    this.last=function(){if(this.num>10){clearInterval(this.timeID);alert('myclass循环结束')} else {document.getElementById("num").innerHTML=this.num;this.num++}}
    }
    var myclass=new JsClass($('ss'));
    </script>
    </body