提示object不是日期对象 <script>
function Calendar() {
var arg = arguments;
switch(arg.length) {
case 0:
Date.call(this);
break;
case 1:
Date.call(this, arg[0]);
break;
case 3:
Date.call(this, arg[0], arg[1], arg[2]);
break;
}
}
Calendar.prototype = new Date();
Calendar.prototype.constructor = Calendar;
var c = new Calendar(2010, 11, 25);
alert(c.getDay());
</script>

解决方案 »

  1.   


    function Calendar(y,m,d) {
                    var arg = arguments;
                    var dateObj;
                    switch(arg.length) {
                        case 0:
                            dateObj=Date.call(this);
                            break;
                        case 1:
                            dateObj=Date.call(this, arg[0]);
                            break;
                        case 3:
                            dateObj=Date.call(this, arg[0], arg[1], arg[2]);
                            break;
                    }
                    return dateObj;
                }
                Calendar.prototype = new Date();
                Calendar.prototype.constructor = Calendar;
                var c = new Calendar(2010, 11, 25);
                alert(c.getDay());
    試試這個吧。
      

  2.   

    这样子能叫继承吗,这样只不过是用Calendar来封装一个返回date一样,如果我在Calendar.prototype上添加方法,那个dateObj能用吗?
      

  3.   


    function Calendar() {
        var arg = arguments;
        switch(arg.length) {
            case 0:
                Date.call(this);
                break;
            case 1:
                Date.call(this, arg[0]);
                break;
            case 3:
                Date.call(this, arg[0], arg[1], arg[2]);
                break;
        }
    }
    Calendar = Date;
    Calendar.prototype.constructor = Calendar;
    var c = new Calendar(2010, 11, 25);
    alert(c.getDay());
      

  4.   

    我想说的是,你这继承看的我心虚。
    你这个功能既然Date已经实现了,你为什么还构造一个出来呢
    你直接 var c = new Date(2010,12,23);不行嘛
      

  5.   


    我现在只是实验下得不得呀,得的话我肯定会添加自己的function啊
      

  6.   

    js的继承方式基本上是
    对象冒充
    原型链http://javascript.crockford.com/prototypal.html
    http://javascript.crockford.com/inheritance.html
      

  7.   

    这样写的话,在Calendar里面定义的属性都访问不到了