js类方法,对象方法,原型的理解

hutiefang 2014-05-04 01:57:34
function People(name)
{
this.name=name;
//对象方法
this.Introduce=function(){
alert("My name is "+this.name);
}
}
//类方法
People.Run=function(){
alert("I can run");
}
//原型方法
People.prototype.IntroduceChinese=function(){
alert("我的名字是"+this.name);
}



//测试

var p1=new People("Windking");

p1.Introduce();

People.Run();

p1.IntroduceChinese();

谁来介绍下这三种方法的区别和使用场景
还有原型方法什么时候使用?
...全文
4050 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
program008 2015-06-28
  • 打赏
  • 举报
回复
原型方法一般是当要让这个方法共享时,才去设置,
cola boy 2015-06-28
  • 打赏
  • 举报
回复
引用 6 楼 u011461314 的回复:
当你确定把它当作class看待的时候 //这是个类构造函数 function People(name) { this.name=name; this.Introduce=function(){ alert("My name is "+this.name); } } //类 静态方法 People.Run=function(){ alert("I can run"); } //类方法 People.prototype.IntroduceChinese=function(){ alert("我的名字是"+this.name); } 因为没有class的概念,所以没有通过class属性对 对象属性初始化这个概念,这点注意一下就可。
说的非常对!用java中类的方法思维去考虑的话,楼主说的“类方法”指的是“静态方法”,而“原型方法”则指的是“实例方法”,静态方法不可以被继承,也不能被重写,类加载时便加载了;而实例方法,则在实例化后加载。如果一个方法经常被调用,并且与自身的对象没有什么关系,就用静态方法;如果一个方法在必然使用它的情况下才需要调用,就用实例方法。
Han-kanon 2015-02-09
  • 打赏
  • 举报
回复
引用 7 楼 ziluopao2014 的回复:
我认为以上的回答,晦涩难懂,是用js的术语来解释js,这种回答不适合初学者滴,呵呵,我是刚刚系统学完了js和jquery,好的教程从来或者很少用科学家喜欢的定义来解释的,有时感觉科学家在阻碍科学的发展!
你这话说的就相当于没说
hutiefang 2014-05-06
  • 打赏
  • 举报
回复
引用 5 楼 dotnetstudio 的回复:
这种自定义函数都是封装在他们自己的命名空间中,这样可以避免冲突,一般都是放在一个单独的js文件中,这样你在引用的时候就不会造成冲突了。
哦,有道理。
ziluopao2014 2014-05-06
  • 打赏
  • 举报
回复
我认为以上的回答,晦涩难懂,是用js的术语来解释js,这种回答不适合初学者滴,呵呵,我是刚刚系统学完了js和jquery,好的教程从来或者很少用科学家喜欢的定义来解释的,有时感觉科学家在阻碍科学的发展!
zhjdg 2014-05-05
  • 打赏
  • 举报
回复
当你确定把它当作class看待的时候 //这是个类构造函数 function People(name) { this.name=name; this.Introduce=function(){ alert("My name is "+this.name); } } //类 静态方法 People.Run=function(){ alert("I can run"); } //类方法 People.prototype.IntroduceChinese=function(){ alert("我的名字是"+this.name); } 因为没有class的概念,所以没有通过class属性对 对象属性初始化这个概念,这点注意一下就可。
KeepSayingNo 2014-05-05
  • 打赏
  • 举报
回复
这种自定义函数都是封装在他们自己的命名空间中,这样可以避免冲突,一般都是放在一个单独的js文件中,这样你在引用的时候就不会造成冲突了。
hutiefang 2014-05-05
  • 打赏
  • 举报
回复
引用 1 楼 dotnetstudio 的回复:
1、对象方法理解就很简单了,主要是如果类生成一个实例,那么该实例就能使用该方法 2、类方法,不需要通过生成实例就可以使用的方法 3、原型方法主要是用来对JS已有的系统对象进行扩展而生的,例如Array数组没有什么方法,你可以为其增加原型方法,那么创建的数组就拥有了该方法。
如果是为了拓展系统方法的话我可以理解,但是看了很多国外人写的代码 自定义函数也是用原型来写的 这样写除了看起来很吊比起不用原型好处在哪儿呢。
licip 2014-05-04
  • 打赏
  • 举报
回复
楼上两位的答案正确。
yang_1224 2014-05-04
  • 打赏
  • 举报
回复
1、对象方法包括构造函数中的方法以及构造函数原型上面的方法; 2、类方法,其实这里的类就是一个函数,在js中由于函数也是一个对象,所以可以为函数添加属性以及方法,这种方法在node中用的比较多; 3、原型方法一般用于对象实例共享,比如Person.prototype.sayName=function(){console.log(this.name);};在原型上面添加该方法,就能实现共享。这样就不用每一次初始化一个实例的时候,为其分配相应的内存了。
KeepSayingNo 2014-05-04
  • 打赏
  • 举报
回复
1、对象方法理解就很简单了,主要是如果类生成一个实例,那么该实例就能使用该方法 2、类方法,不需要通过生成实例就可以使用的方法 3、原型方法主要是用来对JS已有的系统对象进行扩展而生的,例如Array数组没有什么方法,你可以为其增加原型方法,那么创建的数组就拥有了该方法。

87,903

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧