Javascript 原型与类
史蒂夫·耶格(Steve Yegge)最近发表了一篇关于他所谓的通用设计模式的文章。在那里,他详细介绍了如何使用原型作为建模工具,而不是类。与继承相比,我喜欢这种引入较少耦合的方式。但是,通过用其他类而不是继承来实现类,我们也可以从类中获得这一点。其他人是否有使用原型的成功案例,并且可能有助于解释与类相比使用原型的优势。我想这可以归结为静态建模和动态建模,但更多的例子将是非常受欢迎的。原型是一种继承形式,只是对象直接从其他对象继承属性和行为,而不是从继承自其他类的类中获取属性和行为Javascript 原型与类,javascript,oop,prototype,Javascript,Oop,Prototype,史蒂夫·耶格(Steve Yegge)最近发表了一篇关于他所谓的通用设计模式的文章。在那里,他详细介绍了如何使用原型作为建模工具,而不是类。与继承相比,我喜欢这种引入较少耦合的方式。但是,通过用其他类而不是继承来实现类,我们也可以从类中获得这一点。其他人是否有使用原型的成功案例,并且可能有助于解释与类相比使用原型的优势。我想这可以归结为静态建模和动态建模,但更多的例子将是非常受欢迎的。原型是一种继承形式,只是对象直接从其他对象继承属性和行为,而不是从继承自其他类的类中获取属性和行为 例如,查看J
例如,查看JavaScript中的任何面向对象代码。一个有趣的地方是,基于原型的语言act OO很容易,但基于原型的OO语言act很难
- Alex Arnell的是一段简短而甜美的代码,它使JavaScript成为OO,完成了对父“类”的访问李>
- 以下是John Resig针对同一问题的解决方案之一:李>
- 描述Lua中的对象定向。具体来说,本文给出了一个很好的继承示例
这并不是说原型范式都是有利的,也没有不利的。如果OO更具限制性,那是因为它选择了这样做。如果你不小心,我可以看出所有这些灵活性可能会让你陷入麻烦。对于那些感兴趣的人来说,是(是)双语:您有原型,也有类。您可以选择是从类继承、从原型继承还是从两者继承。从语义上讲,原型+委派==类+继承您有反向继承:OOP基于类的继承是原型的子集(是duck类型的子集)我想你误解了我。我是说原型是继承的一种形式,而类/子类是另一种形式。我并没有试图深入到“哪一种可以根据另一种实现”的问题。