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新建的属性会直接放到各个对象里面的
}
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新建的属性会直接放到各个对象里面的
我把我的理解写一下吧
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";
}
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属性后他们的这个属性就没有联系了
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请参照设计模式的“原型模式”理解,但其实质是不一样的。
继承原来就是这个意思当本身对象找不到改属性(方法)时就到父类里面找
而且会先找本身对象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看成一个指针,指向一个函数
那这个函数为什么会有属性呢
想到这里我又很不明白