是jQuery程序吗?

Tom*_*ker 2 jquery

我还在学习jQuery,但是我越是使用jQuery,它就越是程序化而不是面向对象.例如,我不认为我已经看过或使用过任何jQuery类,虽然我确信在内部使用了一些.我所做的只是方法链接,而不是自己构建对象.例如new Foo().此外,插件开发jQuery文档甚至没有提到类.

我的观察是否正确jQuery鼓励您只公开函数和方法,并在编写基于jQuery的库时保留任何自定义类内部?我不是在谈论编写jQuery插件,而是每个应用程序都有的自定义库.

我来自Java,所以我有点困惑.

Ray*_*nos 5

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)


use*_*716 5

jQuery主要只是DOM API上的一个层,加上一些方便的方法,比如each()迭代和枚举.它平滑了一些人可能认为是DOM API中的笨拙,而且肯定是跨实现缺乏一致性.

它不是一个框架,也不是一种语言.它实际上只是提供比DOM API提供的更好的体验.

它利用了javascript中的OOP功能,但它本身并没有提供特定的编程范例.还有像其他的库prototypejsunderscore那些更集中在这一领域.

  • jQuery的+1不是框架而是库.请添加下划线和原型的链接. (2认同)