Javascript 为什么不能重写类的原型?

Javascript 为什么不能重写类的原型?,javascript,Javascript,我们可以重写函数的原型,但不能重写类的原型 function A() { } class B { } let _APrototype = A.prototype; let _BPrototype = B.prototype; A.prototype = function () { }; B.prototype = function () { }; console.log(_APrototype =

我们可以重写函数的原型,但不能重写类的原型

    function A() {
    }

    class B {
    }

    let _APrototype   = A.prototype;
    let _BPrototype = B.prototype;

    A.prototype = function () {
    };
    B.prototype = function () {
    };

    console.log(_APrototype == A.prototype); //false
    console.log(_BPrototype == B.prototype); //true

这是因为您没有实际设置
B.prototype
的值。例如,没有任何东西可以阻止您重写该值。请注意,我如何将Function.prototype更改为字符串,而不能将其更改为类

函数A(){
}
B类{
}
设_APrototype=A.prototype;
设_BPrototype=B.原型;
console.log(A.prototype);
console.log(B.prototype);
A.prototype=“测试A”;
B.prototype=“测试B”;
console.log(A.prototype);//应该已经设定好了。
console.log(B.prototype);//实际上并没有设置。
A.prototype=函数(){
};
B.原型=功能(){
};
console.log(A.prototype);//应该已经设定好了。
console.log(B.prototype);//实际上并没有设置。
log(_APrototype==A.prototype)//假的

log(_BPrototype==B.prototype)//是的
你基本上重新表述了问题本身。“为什么我不能改变原型?”“因为你不能改变原型”。并不是说你错了。@FedericoklezCulloca有时候答案是你不能,因为它是根据文档设计的。我应该知道。有一次,我对一个类似的问题回答“因为语言就是这样设计的”,结果被否决:)@FedericoklezCulloca我更新了我的答案。执行它的原因可能是为了避免丢失其继承的功能