2009-07-08 68 views
15

我们最近使用Prototype构建了一个Web应用程序,对其Class.Create()功能进行了大量的使用。目前,我们正在考虑迁移到jQuery,因为它似乎被认为是更好的库。我一直在对这个主题进行一些阅读,发现jQuery没有像Prototype那样直接为类创建提供内置支持。当然,仍然有.prototype和jQuery.extend(如https://stackoverflow.com/questions/79477/how-to-create-an-object-oriented-class-in-jquery中提到的),但经过一些更多搜索后,我感觉jQuery并不真的'想'以这种方式编写脚本......为什么jQuery似乎不鼓励使用常规的OOP?

同一个页面有一个帖子提到John Resig的Classy插件,这对我来说很不错。但是,该页面指出这实际上是一个愚人节玩笑,而Resig实际上建议不要使用该代码。我很乐意,但我想明白这一切的原因,当然,他们希望你做的是什么。有人能够启发我吗?

-edit-

感谢您的有趣答案。为了清楚起见:这是否意味着将我在Prototype中创建的类重写为“塑造”一个类的jQuery方法并且仍然像以前一样使用它们的方式是很好的?或者这仍然被认为是不好的做法,我应该使用不同的方法?

+4

仅供参考JavaScript不是基于类的语言。这是一种基于原型的语言。 – rahul 2009-07-08 12:48:25

+0

...和Lisp比起来更像C:http://javascript.crockford.com/javascript.html – Boldewyn 2009-07-08 12:55:16

回答

11

首先蹩脚的谷歌搜索“面向对象的JavaScript”原来这件事...但它说明了我想传达出点:

JavaScript Object-Oriented Programming

只要看看在第一段和你发现:

JavaScript不是一个完全面向对象的编程语言。 JS中的类的使用基于原型功能。 Prototype库掩盖了使用原型功能来创建你的类。 jQuery期望您使用原型功能,就像使用常规JS来扩展jQuery本身并创建自己的自定义对象一样。

1

我和从Prototype转换到jQuery的问题完全一样,而且我仍然只能认为是的,看起来他们并不是所有人都在原型意义上成为oop。仍然,编码jQuery你会发现自己很大程度上依赖于JSON,我猜是伪官员最接近你会得到的。

一些jQuery的ui东西实际上迭代了你传递的参数的所有属性,并对它做了一些事情,这意味着你不能这样做,比如Object.prototype,因为那样会添加东西到每个对象,jQuery的ui会尽力将其视为一个相关的参数。

速度和可扩展性是惊人的,虽然如此,我说你以前在原型,并COMETO条款与贾斯汀的回答实际上使一个有效的点:)

0

的jQuery没有直接的 内置支持类创作 Prototype这样做

因为它不应该。创建类最好留给程序员,而不是图书馆。我从Prototype库开始,搬走了,因为它太臃肿了。 JavaScript中的OOP并不难。只要你知道如何使用原型,你就会好起来的。

在处理Prototype的Class.create时,使JavaScript中私有成员的等价变得棘手。说实话,我不认为Class.create给你任何有用的东西,你不能轻易地自己或与jQuery做。

您可以同时使用这两个库来帮助进行转换。 jQuery有这个不错的noConflict功能,它将$函数返回给它的原始所有者。

相关问题