js代码如下:<script type="text/javascript">
var o1 = {testvar:11, fun:function() { alert('o1: ' + this.testvar); }};
var o2 = {testvar:22, fun:function() { alert('o2: ' + this.testvar); }};

alert(o1.fun());
alert(o2.fun());
alert(o1.fun.call(o2));
</script>预期的效果是相继弹出:
 o1:11   
 o2:22    
 o2:22
但是弹出的值却是:
 o1:11   
 undefined
 o2:22    
 undefined
 o2:22
 undefined
每次弹出函数执行的结果后总是弹出一个undefined,这个undefined是到底从何而来,请高手指点。

解决方案 »

  1.   

    alert(alert('a'))
    也是弹出一次a 一次undefined
    跟你这上面有区别吗?????????
      

  2.   

    本来只是想调用方法,却将外面加上了alert,是我的失误。谢谢桃子了。
      

  3.   

    又见到这样定义类了,这样会浪费内存,应该这样$(function()

    var o1=new Test(11);
    alert(o1.fun())
    });
    function Test(testvar)
    {
    this.testvar=testvar;
    if(typeof Test._initial=='undefined')
    {
    Test.prototype.fun=function()
    {
      return this.testvar;
    }
    }
    Test._initial=true;
    }undefined是什么,就是没定义的意思
    比方说:
    var a;
    alert(a)
    返回就是"undefined"