我有办法,在创建新物体时,允许我选择原型(摘自“Javascript:The Good Part”书):
Object.create = function(o) {
var F = function() {};
F.prototype=o;
return new F();
}
现在,我反对:
var car = {
model: "Nissan"
};
我使用“Create”方法,根据这个目标制造了一个新物体:
var car1 = Object.create(car);
然后,我可以给汽车添加一个财产,并将在汽车1号(动力推进器)。 因此:
car.year=2011; // Gets added to "car"...
alert(car1.year); // ... Is also avaialable to car1
Q1] 这种行为表明,“年份”在汽车原型中添加,因此,该原型可加到汽车1号。 这是否正确? 如果不是的话,那么“年”的添加到哪里,为什么“伤car”和“伤car1”都可以使用?
此外,根据代表团规则,如果在物体上找不到一种方法,则会搜索其原型,然后检查链上的所有原型,直至其提出异议。 原型。 因此,如果我这样说的话:
Object.prototype.originCountry = "Japan";
alert(car.originCountry); // Outputs Japan
alert(car1.originCountry); // Outputs Japan
然而,如果我这样做的话:
Object.carColor= "White";
alert(car.carColor); // Error!
Q2] 当我把财产添加到“car”(见上文car.year例时,便添加到汽车原型中。 然而,当我添加一个财产来标注时,它并未添加到目标原型中? 如果将其添加到目标原型中,那么为什么根据代表团规则无法“卡尔”?
为什么发生这种情况?