这是否正确(JavaScript 原型 属性)?

Is this correct (JavaScript prototype property)?

我在这里创建了一个函数,最终将用作其他克隆的构造函数。除了创建的属性 arguments, caller, length, name, __proto__(link to Function.protoype) 之外,还创建了 prototype 属性。 属性 指向的对象将作为原型分配给使用 new 关键字调用此函数时创建的实例。

function Clonetrooper(ID, rank, yearsOfService, type){
if (!(this instanceof Clonetrooper)){
    return new Clonetrooper(ID, rank, yearsOfService, type);
}
this.ID = ID;
this.rank = rank;
this.yearsOfService = yearsOfService;
this.type = type;
} 

所以当我这样做时:

Clonetrooper.prototype.hasUtilityBelt = true;
Clonetrooper.prototype.hasLightSaber = false;

我正在 Clonetrooper 原型 属性 上添加属性。一个一个。

但是如果我之后这个

Clonetrooper.prototype = {
    name: null
    hasDroid: null

};

我已经将 link 覆盖到 Clonetrooper's 构造函数,用新的 Object 替换它 link 到 Object.prototype。

所以我的问题是,最后一个语法确实覆盖了你的 prototype 属性?

所以可能应该仔细计划 object 以避免这种情况发生。

是的,我们必须小心。在大多数情况下,我们应该通过以下两种方式之一扩展 现有原型:

Clonetrooper.prototype.foo = ...

或(例如使用jQuery)

$.extend(Clonetrooper.prototype, {
    bar: ...,
    baz: ...
})