我还在学习jQuery,但是我越是使用jQuery,它就越是程序化而不是面向对象.例如,我不认为我已经看过或使用过任何jQuery类,虽然我确信在内部使用了一些.我所做的只是方法链接,而不是自己构建对象.例如new Foo().此外,插件开发的jQuery文档甚至没有提到类.
我的观察是否正确jQuery鼓励您只公开函数和方法,并在编写基于jQuery的库时保留任何自定义类内部?我不是在谈论编写jQuery插件,而是每个应用程序都有的自定义库.
我来自Java,所以我有点困惑.
jQuery是程序化的OO.
$(domNode)返回一个新的jQuery对象.如果你看一下源代码,jQuery方法会返回一个new对象.
$(domNode).foo 在jQuery对象上调用该方法.
您对没有class关键字的事实感到困惑.
function Constructor() {
this.constructed = true;
}
var o = new Constructor;
alert(o.constructed);
Run Code Online (Sandbox Code Playgroud)
只要使用new关键字,该函数将用作对象构造函数.Java和JavaScript OO之间存在很大差异.JavaScript使用原型继承而不是基于类的继承.
如图所示jQuery中的链接完成此.在jQuery对象上调用的每个方法都将返回jQuery对象.
$(obj).css("foo").attr("bar"); // we can call both methods on $(obj)
var o = $(obj).css("foo"); // .css returns $(obj)
alert(o[0] === $(obj)[0]); // o & $(obj) point to the same DOM node
o.attr("bar");
Run Code Online (Sandbox Code Playgroud)
jQuery主要只是DOM API上的一个层,加上一些方便的方法,比如each()迭代和枚举.它平滑了一些人可能认为是DOM API中的笨拙,而且肯定是跨实现缺乏一致性.
它不是一个框架,也不是一种语言.它实际上只是提供比DOM API提供的更好的体验.
它利用了javascript中的OOP功能,但它本身并没有提供特定的编程范例.还有像其他的库prototypejs和underscore那些更集中在这一领域.
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |