哪位高人讲解一下,这段JS什么意思,为什么会出错!
<script language="javascript" type="text/javascript">
    //出错了,栈溢出。
        Object.extend = function(destinction, source) 
{
            for (property in source) 
{
destinction[property] = source[property];
}
            return destinction;
        }
        Object.prototype.extend = function(object) 
{
            return object.extend.apply(this,[this,object]);
        }
        //定义class1
        function class1() 
{
        }
        
        class1.prototype =
{
            m1: function() 
{
                alert(1);
            },
            m2:function()
{
                alert("m2");
            }
        }
        
        //定义class2
        function class2() 
{
        }        class2.prototype = (new class1()).extend(
{
            m1: function() 
{
                alert("class2");
            }
        });
        
        var obj1 = new class1();
        var obj2 = new class2();
        obj1.m1();
        obj1.m2();        obj2.m1();
        obj2.m2();
        
    </script>

解决方案 »

  1.   

    return object.extend.apply(this,[this,object]);object ==> Object
      

  2.   

    以上代码就是做了一件事:
    类的继承改一个字母就行<script language="javascript" type="text/javascript">
        //出错了,栈溢出。
            ...
            Object.prototype.extend = function(obj)          // 这里的object 最好不要
                                                                         // 这么写 一般写 obj
                                                                // 这样就不会confuse了
            {
                return Object.extend.apply(this,[this,obj]); //  第一个小写字母o,
                                                                //  改成大写字母O
            }
            ...        
        </script>