构造函数中初始化的JavaScript原型属性不会使用分配的新原型进行重写

构造函数中初始化的JavaScript原型属性不会使用分配的新原型进行重写,javascript,Javascript,例如: function ChildClass() { **ChildClass.prototype.Field1 = "Field1 value";** } ChildClass.prototype = {}; var childInstance = new ChildClass(); print(childInstance.Field1); 为什么我们仍然可以访问childInstance.Field1?您的构造函数正在添加属性。当您调用构造函数创建新实例时,该字段将添加到原型

例如:

function ChildClass() {
    **ChildClass.prototype.Field1 = "Field1 value";**
}

ChildClass.prototype = {};

var childInstance = new ChildClass();
print(childInstance.Field1);

为什么我们仍然可以访问childInstance.Field1?

您的构造函数正在添加属性。当您调用构造函数创建新实例时,该字段将添加到原型中。

因为您从构造函数内部对原型设置了该属性,该属性在ChildClass.prototype={};之后运行

现在还不清楚是什么让人困惑;构造器函数在与new一起使用时确实会运行。如果有人甚至不理解像这样的基本内容,他们怎么会问关于原型设计的问题呢?我迷路了。。。。如果该值是可变的,这可能是不好的,因为实例将共享一个引用,但每次都会重新初始化它。