function User(){ } User.prototype.display=function(){ alert(1); } new User().display();
楼主的代码的写法定义的是类方法 故不能使用对象来调用 修改如下就可以了: function User(){ } User.display=function(){ alert(1); } User.display();如果楼主要用对象的方式 有2中写法: 楼上的是一种 另一种是用构造函数 function User(){ this.display=function(){ alert(1); } } User.display();
我楼上笔误了 汗~~ function User(){ this.display=function(){ alert(1); } } new User().display();
new User()是调用User()的构造器(整个函数体)并返回一个实例对象,该对象只包含构造器中用this.标识的属性和方法。你在外面写的User.display=function(){alert(1);}在实例中是没有的,此方法可以理解为类的静态方法。 再回下4楼,静态方法就是不需要new,而仅仅需要类名就能调用的方法。
1 javascript 会将我们声明的一个函数当作一个对象来对待, 比如:
function User(){ //第一种写法; }; 其实是声明了一个User对象,这个对象是全局的;如果我换一种写你可能会更好理解一些(上述代码的等效写 法);
function User(){
}
User.prototype.display=function(){
alert(1);
}
new User().display();
function User(){
}
User.display=function(){
alert(1);
}
User.display();如果楼主要用对象的方式 有2中写法:
楼上的是一种 另一种是用构造函数
function User(){
this.display=function(){
alert(1);
}
}
User.display();
function User(){
this.display=function(){
alert(1);
}
}
new User().display();
再回下4楼,静态方法就是不需要new,而仅仅需要类名就能调用的方法。
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(); 说到这里不知楼主是否有所觉悟,如果我一直往下讲恐怕我写一天也写不完;希望楼主慢慢理解;