function Car(){
}
var car = new Car();
var car2 = new Car();
Car.prototype.type = "mm";
car2.type = "m";
alert(car.type);
alert(car2.type);
这里明显car和car2的type是独立的空间的
所以prototype新建的属性会直接放到各个对象里面的

解决方案 »

  1.   

    prototype里的成员是不会放到各个对象里的,而是在对象检索成员时,JS引擎会自动搜索其“类”(或称为构造器)的prototype属性里的成员。
      

  2.   

    这样比较难表达我的意思
    我把我的理解写一下吧
    function Car(){
    }
    var car = new Car();
    Car.prototype.type = "mm";
    car.type = "m";这里的过程是:
    1 Car->function (){}
    2 创建一个新的new(function (){})
      car->new(function (){})
    3 Car的function (){} 的 prototype 添加 type = "mm";
      car的new(function (){}) 添加 type = "mm";
    4 car的new(function (){}) 的 type 改为 "m";
      

  3.   

    car的type属性在添加之后跟Car的prototype的type还有没有联系的呢
      

  4.   

    function Car(){
    }
    var car = new Car();Car.prototype.type = "mm";
    alert(Car.prototype.type);
    alert(car.type);car.type = "m";
    delete Car.prototype.type;
    alert(Car.prototype.type);
    alert(car.type);这里显示udf和“m”
    那就是说在car继承了Car的type属性后他们的这个属性就没有联系了
      

  5.   

    car的type属性在添加之后跟Car的prototype的type还有没有联系的呢=======================
    function Car(){                     // Car->function (){}
    }
    var car = new Car();                // car->类“Car”的一个例
    Car.prototype.type = "mm";          // Car.prototype增加一成员type,值为"mm"
    alert(car.type);                    // 首先查找car对象成员,不存在type,然后在其类Car的prototype里查找,此时找到,则返回,仍没找到则返回undefine.
    car.type = "m";                     // 在car对象中增加一成员type,值为"m"
    alert(Car.ptototype.type);          // 可见并没有改变到其类的prototype成员的值
    alert(car.type);                    // 由于在car对象中已找到type成员,故不用再查找其类的prototype属性的成员。//关于prototype请参照设计模式的“原型模式”理解,但其实质是不一样的。
      

  6.   


    继承原来就是这个意思当本身对象找不到改属性(方法)时就到父类里面找
    而且会先找本身对象function Car(){ 
    this.type = "mmm"
    }
    Car.prototype.type = "m";
    var car = new Car();
    alert(car.type);
    delete car.type;
    alert(car.type);
    delete Car.prototype.type;
    alert(car.type);
    Car.prototype.type = "mm";
    alert(car.type);这里分别是mmm m udf mm第一个mmm说明在创建时继承的是在原来对象的type属性(那这时Car.prototype.type是什么呢)
    第二个m说明在car对象不存在type时,会在父类Car的prototype里查找
    第三个udf说明car对象不存在type时只会在在父类Car的prototype里查找不会在原来的父类Car里找,也就是说在car对象创建之后对Car本身没有继承作用了?(这个感觉很糊涂啊)
    第四个mm只是更加说明prototype的伟大吧(乐于奉献)在Car()这样用时,我更觉得Car是一个方法
    但Car又有它的属性(例如prototype),我又觉得它是一个对象我多数把Car看成一个指针,指向一个函数
    那这个函数为什么会有属性呢
    想到这里我又很不明白