问题是从语言设计的 Angular 来看的。

我应该解释一下这种情况。我正在研究一个不支持原型(prototype)的javascript变体,但是它已经过期了一个体面的类型系统(最重要的是支持instanceof)。 ecmascript规范并不重要,因此我可以自由地实现不同且更适合的功能。

在变体中:-

  • 您无需使用function foo()声明构造函数,而是在模板文件中声明构造函数,这意味着构造函数存在于命名空间中(由文件路径指定)
  • 当前,行为的所有继承都是通过应用模板来完成的,这意味着将所有共享功能都复制到每个单独的对象上(毕竟没有原型(prototype))。

  • 从来没有做过网络开发人员,这使我处于从未使用过原型(prototype)而愤怒的状态。尽管这并没有阻止我对此发表意见。

    据我了解,原型(prototype)模型的主要问题是
  • 不必要地乱扔对象 namespace ,obj.prototype,obj.constructor(这是一个不成熟的反对,试图保留将对象视为 map 的能力,也许它们不是吗?)
  • 在运行时更改共享行为的功能似乎没有必要,当直接使用额外级别的间接调用时,obj.shared.foo()会更直接。特别是它是一个很大的实现难题
  • 人们似乎不太了解原型(prototype),例如原型(prototype)和构造函数之间的区别。

  • 因此,要解决这些问题,我的想法是拥有一个特殊的运算符Constructors。基本上,原则是每个对象都有一个构造函数列表,有时您需要访问这些构造函数。
    var x = new com.acme.X();
    com.acme.Y(x,[]);      // apply y
    
    (constructorsof x) // [com.acme.Y,com.acme.X,Object];
    
    x instanceof com.acme.X;   // true
    x instanceof com.acme.Y;   // true
    

    感谢所有反馈,我很欣赏我的观点可能很困难,因为我想传达很多东西,但是它的重要决定和专家意见可能非常宝贵。
  • 任何可以增进我对原型(prototype)模型的了解的东西,无论好坏。
  • 对我的建议的想法

  • 谢谢,

    麦克风

    编辑:提案现在很有希望。

    最佳答案

    史蒂夫·耶格(Steve Yegge)就prototype model撰写了一篇很好的技术文章。

    关于javascript - 从javascript的原型(prototype)模型可以学到什么教训?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/624924/

    10-12 13:05
    查看更多