gpt4 book ai didi

javascript - 从javascript中的原型(prototype)模型中可以吸取哪些教训?

转载 作者:行者123 更新时间:2023-11-29 16:30:02 24 4
gpt4 key购买 nike

问题是从语言设计的 Angular 。

我应该稍微解释一下情况。我正在研究一个不支持原型(prototype)的 javascript 变体,但是它应该是一个体面的类型系统(最重要的是支持 instanceof)。 ecmascript 规范并不重要,所以我可以自由地实现一些不同的和更适合的东西。

在变体中:-

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

我从来都不是 Web 开发人员,这让我处于一个有点奇怪的位置,即从未在愤怒中使用过原型(prototype)。尽管这并没有阻止我对他们发表意见。

据我所知,原型(prototype)模型的主要问题是

  • 不必要地乱扔对象命名空间、obj.prototype、obj.constructor(这是一个不成熟的反对意见,试图保留将对象视为映射的能力,但也许它们不是?)
  • 在运行时更改共享行为的能力似乎没有必要,因为直接使用额外的间接级别会更直接 obj.shared.foo()。特别是这是一个相当大的实现难题
  • 人们似乎普遍不太了解原型(prototype),例如原型(prototype)和构造函数之间的区别。

因此,为了解决这些问题,我的想法是拥有一个特殊的运算符 constructorsof。基本上,原则是每个对象都有一个构造函数列表,您偶尔会想要访问它。

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

感谢所有反馈,我很感激可能很难理解我的 POV,因为我想传达很多东西,但这是一个重要的决定和专家意见可能是无价的。

  • 任何可以提高我对原型(prototype)模型的理解的东西,无论是好的还是坏的。
  • 对我的提案的想法

谢谢,

迈克

edit:提案现在很有希望是有意义的。

最佳答案

Steve Yegge 写了一篇关于 prototype model 的很好的技术文章.

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com