function a(){
this.a=1;
this.prototype.b=2;//为什么 要报错...  不能这样写吗?  只能 a.prototype.b=2; 这样写吗??
}

解决方案 »

  1.   

    prototype是指原形只有函数才有原形   所以你那个肯定抱错
      

  2.   

    你的a()实际上可以理解为a类型的构造方法。在使用new a()的时候,this才有意义,指向被创建的对象本身。对象是没有原形的,构造方法才有原形。
    你在new一个对象的时候实际上是复制该对象的原型,然后以这个对象为作用域执行构造方法。
    建议把概念理解透彻之后在写js的oop,不然肯定会逻辑混乱
      

  3.   

    我觉得可以这么理解。this相当于一个引用(指针),引用是没有prototype属性的,只有对象才有。
    比如, var a=new Person(); a是指向Person对象的指针。a没有prototype属性,但Person有。
    我也是初学者,如有错误还请指正。