在用OO的方式开发js时,我们可以这样来定义对象的方法
A:
function A(name){
this.name=name;
}

A.prototype.getName=function(){
return this.name;
}
也可以这样定义方法:
B:
A.prototype={
getName:function(){
return this.name;
}
}
我想请教各位,这两种方法有什么不同呢,一个是向prototype上添加方法,一个是直接重写了prototype属性

解决方案 »

  1.   

    A, B 分别执行以下语句!
    alert(A.prototype.constructor);
    A
    function A(name){ 
        this.name=name; 

    B
    function Object() { 
        [native code] 

      

  2.   

    恕小弟愚钝,还是不明白。确实有区别,但是到底在哪里呢,还有,在编程实践时,我们应该以何种方式来定义对象的方法呢?我现在使用B的方式,因为可以写很多方法,不用每次都写prototype
      

  3.   


    如果用B的方式 那他原来prototype里的方法不就没有了么
      

  4.   

    回楼上,确实,用B的方法等于重写了类的prototype,所以,如果是自己创建的新类,就可以用B的方法,如果是扩展别人的类,就应该用A的方法。貌似这两种方法都是给这个类添加方法,可是区别在哪呢?