function MyObject(){
     var name;
     var id;
  }
  function MyObject(name,id){
    this.name=name;
    this.id=id;
  }

解决方案 »

  1.   

    function MyObject(){
         var name;
         var id;
      }
      function MyObject(name,id){
        this.name=name;
        this.id=id;
      }明显不正确
    var 在function构造执行的时候已经消亡了。
    第二个函数还把第一个覆盖了。javascript没有函数重载  function MyObject(name,id){
        this.name=name;
        this.id=id;
      }
    你要定义类这样就行了
    构造体这样写都是可以通过编译的
    var obj = new MyObject("name", 1);
    var obj2 = new MyObject("name");
    var obj3 = new MyObject();
    不过里面没有传的值就自动为undefined了
      

  2.   

    无法使用的,这样定义是错误的,函数MyObject(name,id) 无法调用MyObject()中的变量,MyObject()中的变量不是全局变量。
      

  3.   


    多态???看我blog
    http://rainsilence.javaeye.com/blog/604418其中var Animal = Rs.Class({  
        initialize: function(name){  
          
            this.name = name;    
        },  
            
        showName: function(){      
            alert(this.name);      
        }    
    });  
    var BlackCat = Rs.Class(Cat, {  
        initialize: function(name, type) {    
                    // 调用父类构造函数    
            BlackCat.superclass.prototype.initialize.call(this, name);    
            this.type = type;    
        },    
        showType: function() {    
            alert(this.type);    
        },    
        showName: function() {    
            alert(this.name + ":" + this.type);    
        }    
    });    
    Animal中有showName,BlackCat中也有showName
    BlackCat中的showName将Anmial中的重写了(Override/函数重写而不是函数重载)
    那么var animal = new BlackCat();
    animal.showName();调用的是BlackCat的showName。
    alert(animal instanceof Animal);// true
    这才是多态。多态的基础有两个,一个是继承,一个是函数重写。你这里只是单单的两个函数。其中第二个函数把第二个函数给覆盖了而已。你的代码相当于
    MyObject = new Function(函数内容);
    MyObject = new Function("a", "b", 函数内容);第二个函数指针将第一个覆盖。
      

  4.   

    正确。下面的,将会把上面的一个Function覆盖。
      

  5.   

    js里什么都是对象,function和var定义的都是对象。你怎么写都是对象。
    只是对象的方法和属性有讲究,你的两种写法,name和id都是不是对象的属性,这么写:function MyObj(){};
    Myobj.name=null;
    Myobj.id=null;或者var MyObj={name:null,id:null};
      

  6.   

    希望下面的代码对你有用
    function MyObject(name,id)
    {
    var name;
    var id;
    }function MyObject(name,id)
    {
    this.name=name;
    this.id=id;
    }
    MyObject.prototype.show = function()
    {
    alert("this.name="+this.name +";this.id="+ this.id);
    }var obj = new MyObject("csdn.net",1);
    obj.show();
      

  7.   


    无话可说
    // 这种写法等同于下面的写法,在结构上,可以看成是已从单例类中实例化的单例对象
    var MyObj = {name:'test'};var MyObj = new Object();
    MyObj.name = 'test';function MyObject() {};
    MyObject.prototype.showName = function() {
    alert(this.name);
    };// 这种写法和上面的写法没有任何区别,因为MyObject是Function,Function也是Object。
    MyObject.name = 'test';// 但是这里是null,你的写法跟属性完全没关系。勉强算得上是static。而且还是模拟的。
    new MyObject().showName();
    alert(MyObject.name);// 属性的正统写法
    MyObject.prototype.name = 'test';
    new MyObject().showName();
      

  8.   

    哥们,是你没搞清状况吧,什么叫“单例类”翻成英文我听听?js是基于prototype哪来的class。而且prototype本身的目的和class一样,是批量生产对象,但js造对象并不一定需要批量化,也就无需先搞个显式写个prototype再用之产对象。莫名其妙的是,null和属性有什么排斥关系吗?prototype下固然可以为产出对象声明属性,直接写的就不是属性?更幽默的是js里连class都没有,哪里还有static的概念。你是c++不熟悉,js也不熟悉,结果生搬硬套,导致两个不同语言的概念混淆在一起。建议你看看我的教程
    http://iamduyu.cn/?tag=javascript
      

  9.   


    function MyObj(){};
    Myobj.name=null;
    Myobj.id=null;

    var MyObj={name:null,id:null};
    一样吗?我上面已经解释的很清楚了// 这两种写法意义一样
    function MyObj(){};
    Myobj.name=null;
    Myobj.id=null;MyObj = new Function();
    MyObj.name = null;
    MyObj.id = null;
    // 这两种写法意义一样,({name:'test'}可以看成单例模式)
    var MyObj = {name:'test'};var MyObj = new Object();
    MyObj.name = 'test';引用你的话
    【莫名其妙的是,null和属性有什么排斥关系吗?prototype下固然可以为产出对象声明属性,直接写的就不是属性?】null和属性并没有排斥关系,但是后面那句是万万不能苟同。建议你把我16楼的回复好好运行下,就知道其中的奥妙了。继续引用你的话
    【更幽默的是js里连class都没有,哪里还有static的概念。】
    16楼代码:
    // 但是这里是null,你的写法跟属性完全没关系。勉强算得上是static。而且还是模拟的。
    new MyObject().showName();
    alert(MyObject.name);
    这里我上面对name进行了赋值,但是这里却出现null,说明你的属性设置方法根本取不到。后面我还加了勉强一词。可懂?
      

  10.   


    你的教程我拜读过了js面向对象怎么不写原型链继承?既然js有继承为什么没有class,写的很突然,突然就jquery了。建议你平时修炼的时候jquery少用为妙。那玩意儿是强大,强大的让你没法成为高手。
      

  11.   

    JS面对对象了都?咱咋不知道……JS是基于对象的,啥时候成了面对对象的程序语言了?
      

  12.   

    楼主说声明对象是否正确,并没有说id和name要成为被function而后new出来的对象的属性。别忘了function声明的本身也是对象。至于其它的,以后你自然会明白。