因为你写的这个例子是用了返回,document.body.appendChild(new crobj(i));
如果直接document.body.appendChild(new crobj(i).div);
作为类的属性添加可以吗?

解决方案 »

  1.   

    我通过类如何取到返回值呢?(不是函数调用,使用var object=new crobj(i))这个不会返回值的new 后直接就返回对象了,不会返回函数的返回值的。。
      

  2.   

    http://community.csdn.net/Expert/TopicView3.asp?id=5699348
      

  3.   

    经过测试。。发现。。
    new 后。。
    return 这里的值如果是对象的引用的话,那么则返回这个。否则返回类 - -,真奇妙。。
      

  4.   

    document.body.appendChild(new crobj(i).div);如果你想这样的话
      

  5.   

    这样就可以了。。
    <script type="text/javascript">
    var crobj = function (i) {
    var wc = this, div;
    wc.time = 0;
    (div = wc.div = document.createElement("div")).innerHTML = (wc.number = i);
    div.onmouseover = function () {
    wc.over();
    }
    div.onmouseout = function () {
    wc.out();
    };
    };crobj.prototype = { over : function () {
    this.time = window.setTimeout("alert('" + this.number + "被P了2S')", 2000);
    },

    out : function () {
    window.clearTimeout(this.time);
    }};
    window.onload = function () {
    for (var i = 0 ; i < 5 ; i ++)
    document.body.appendChild(new crobj(i).div);
    };
    </script>
      

  6.   

    经过测试。。发现。。
    new 后。。
    return 这里的值如果是对象的引用的话,那么则返回这个。否则返回类 - -,真奇妙。。
    ~~~~
    不明白这句话是啥意思,能否解释一下啊
      

  7.   


    <style type="text/css">
    div {
    width:200px;
    height:40px;
    line-height:40px;
    background-color:#CCCCCC;
    border:#000000 3px solid;
    margin-top:5px;
    }
    </style>
    <script type="text/javascript">
    window.onload = function () {
    for(i=0;i<5;i++){
    var div = document.createElement("div");
    (function () {
    div.innerHTML = i;
    var  time;
    div.onmouseover = function () {
    var time = window.setTimeout("alert('" + i+ "被P了2S')", 2000);
    };
    div.onmouseout = function () {
    window.clearTimeout(time);
    };
    })();
    document.body.appendChild(div);
    }
    };
    </script>
    这样为什么不行呢?该怎样改呢?muxrwc(需时越兔)
      

  8.   

    这样就没问题了。。嘿嘿
    <style type="text/css">
    div {
    width:200px;
    height:40px;
    line-height:40px;
    background-color:#CCCCCC;
    border:#000000 3px solid;
    margin-top:5px;
    }
    </style>
    <script type="text/javascript">
    window.onload = function () {
    for(i=0;i<5;i++){
    var div = document.createElement("div");
    (function (i) {
    div.innerHTML = i; //你这里的I是引用的外面的那个I所以不行
    var  time;
    div.onmouseover = function () {
    //var time = window.setTimeout("alert('" + i+ "被P了2S')", 2000);
    //并且你这里重新的var(声明)了一下time,这样的话这个变量的作用范围就是这个函数内。
    //所以外面就访问不到time了。。所以你要把var去掉
    time = window.setTimeout("alert('" + i+ "被P了2S')", 2000); //即
    };
    div.onmouseout = function () {
    window.clearTimeout(time);
    };
    })(i);
    document.body.appendChild(div);
    }
    };
    </script>
      

  9.   

    return 这里的值如果是对象的引用的话,那么则返回这个。否则返回类 - -,真奇妙。。
    这个这个的意思就是new的话,一般都返回实例对象...
    但是如果你的构造函数里有return的话..return的内容是对象.这样new操作后..
    就不会返回实例对象,而是返回return的这个对象...