var abstractClass = {
    A:function(){ alert("a"); }
    B:function(){ alert("b"); }
}var tempClass = {
    C:function(){ alert("c"); }
    D:function(){ alert("d"); }
}
有以上两个js类,现在我想tempClass继承abstractClass要怎么作呢。

解决方案 »

  1.   


    <!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=gb2312" />
    <title>无标题文档</title>
    <script language="javascript" type="text/javascript">
    var abstractClass = function(){
        
    }abstractClass.prototype = {
    A:function(){ alert("a"); },
        B:function(){ alert("b"); }
    };var tempClass = function(){
       
    }tempClass.prototype = {
      C:function(){ alert("c"); },
        D:function(){ alert("d"); }
    };tempClass.prototype = new abstractClass();var t = new tempClass();
    t.A(); //父类的方法A</script>
    </head><body>
    </body>
    </html>
      

  2.   

    你这个已经不是类(或构造函数)了var o = {};
    // 上面的代码跟下面的创建方式是一回事
    var o = new Object();你那么写生成的就是实例对象,既然不是构造函数(或者你说的“类”)也就无所谓什么继承了。
    如果非要实现,建议你把对象abstractClass的所有属性和方法copy过来,下面是示例代码:// extend tempClass
    function extendProperty(base, sub) {
        for(var p in base) {
            if(typeof sub[p] === "undefined") {
                sub[p] = base[p];
            }
        }
    }var abstractClass = {
        A:function(){ alert("a"); },
        B:function(){ alert("b"); }
    }var tempClass = {
        C:function(){ alert("c"); },
        D:function(){ alert("d"); }
    }// extend now
    extendProperty(abstractClass, tempClass);// test
    tempClass.A();
    tempClass.B();
    Enjoy!!