function User(){
}
User.display=function(){
    alert(1);
}
new User().display();
//解释下无法调用的原因?万分感谢。

解决方案 »

  1.   


    function User(){
    }
    User.prototype.display=function(){
      alert(1);
    }
    new User().display();
      

  2.   

    楼主的代码的写法定义的是类方法 故不能使用对象来调用 修改如下就可以了:
    function User(){
    }
    User.display=function(){
      alert(1);
    }
    User.display();如果楼主要用对象的方式 有2中写法:
    楼上的是一种 另一种是用构造函数
    function User(){
       this.display=function(){
         alert(1);
       }
    }
    User.display();
      

  3.   

    我楼上笔误了 汗~~
    function User(){
       this.display=function(){
         alert(1);
       }
    }
    new User().display();
      

  4.   

    new User()是调用User()的构造器(整个函数体)并返回一个实例对象,该对象只包含构造器中用this.标识的属性和方法。你在外面写的User.display=function(){alert(1);}在实例中是没有的,此方法可以理解为类的静态方法。
    再回下4楼,静态方法就是不需要new,而仅仅需要类名就能调用的方法。
      

  5.   

    1 javascript 会将我们声明的一个函数当作一个对象来对待,   比如:
       
       function User(){
       //第一种写法; 
      };
      其实是声明了一个User对象,这个对象是全局的;如果我换一种写你可能会更好理解一些(上述代码的等效写  法);
      
      var User=function(){
     
           //第二种写法;            };
      
    两种写法是等效的;既然User是一个对象(函数对象),我们自然可以给该对象添加方法比如://给User对象添加Display方法;
    User.Display=funciton(){};对象方法的调用语法是:对象.方法();  所以我们调用User对象的Display的方法自然是:User.Display();
    2 javascript中的函数对象同时又是一个类
       
       例如:    function User(){     };
        述声明了一个类,因为我们可以这样来声明他的实例;
        
          //声明User类的实例user对象;
          var user=new User();    说到这里不知楼主是否有所觉悟,如果我一直往下讲恐怕我写一天也写不完;希望楼主慢慢理解;