所以...我已经编程40年了,从机器语言到C++再到Javascript/Typescript。在过去的10年里,大量使用Javascript。
当被问及原型继承与经典继承时,我似乎步履蹒跚。我一直在读文章,我一直在排练,but...honestly,我觉得我理解了概念,但不知道如何给面试官他们想要的东西。
C++是我对经典继承的参考框架(以及我也用来编程的Java和C# )。在这里继承是静态的-你从一个类创建一个对象,仅此而已。
Javascript当然是动态的。您创建了一个具有原型的对象,该原型本身也具有原型,并且这些原型具有可以在运行时扩展的方法和属性,并且将可用于共享该原型链的所有对象。
好的,酷。
这些我都明白。但我似乎不能给面试官他们想听的。老实说,我使用class、extends和Typescript接口,虽然我知道它在幕后是不同的,但我体验到的唯一真正的实际区别是,您可以在运行时为polyfills之类的东西修改原型(实现缺失的功能)。
So...help。我觉得所有的知识都在我的脑海里,但我不知道如何恰当地传达它。
发布于 2019-10-13 20:20:42
免责声明:我仍然是一个经验非常有限的本科生。
在实现有限域代数时,我意识到了这两种方法的不同。我们有:
class Field{
int p;
Field (int p){
this->p = p;
}
};
class FieldElement: public Field{
int x;
FieldElement(int x, int p) : Field(p){
this->x = x;
}
};现在,在这里,每个字段元素都有自己的字段,并存储有关该字段的所有信息(这里恰好是一个整数p )。想象一下,如果Field类非常繁重,然后我们有许多FieldElement类型的对象。每个物体都会携带其庞大的场。取而代之的是,javascript类型的原型链可以被认为只是一个指向元素所属的Field对象的指针。
希望我能令人满意地回答你的问题。
https://stackoverflow.com/questions/57931503
复制相似问题