首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Javascript plugins设计模式,如jQuery

Javascript plugins设计模式,如jQuery
EN

Stack Overflow用户
提问于 2010-05-20 19:37:02
回答 3查看 2.1K关注 0票数 7

有没有人可以用javascript写一个非常简单的基本例子来概念化(希望能让我理解) jQuery插件设计模式是如何完成的,以及它是如何工作的?

我对如何为jQuery创建插件不感兴趣(所以这里根本没有jQuery代码)。我感兴趣的是一个简单的解释(也许用一点Javascript代码)来解释它是如何通过插件概念来完成的。

请不要回复我去读jQuery代码,我试过了,但是它太复杂了,否则我不会在这里发问的。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2010-05-20 19:51:51

jQuery有一个名为fn的内部对象中存储的函数库。您可以在每个jQuery对象上调用这些函数。

当您执行$("div.someClass")时,您将获得一个包含该类的所有<div>元素的jQuery对象。现在,您可以执行$("div.someClass").each( someFunction )someFunction应用到它们中的每一个。这意味着,each()是存储在fn中的函数之一(在本例中是一个内置函数)。

如果您扩展(添加到)内部fn对象,则会自动使您的自定义函数以相同的语法可用。假设您有一个名为log()的函数,用于将所有元素记录到控制台。您可以将此函数附加到$.fn,然后将其用作$("div.someClass").log()

附加到fn对象的每个函数都将以这样的方式调用:在函数体中,this关键字将指向您使用的jQuery对象。

通常的做法是在自定义函数的末尾返回this,这样方法链接就不会中断:$("div.someClass").log().each( someFunction )

有几种方法可以将函数附加到$.fn对象,其中一些方法比其他方法更安全。一个非常安全的做法是:

代码语言:javascript
复制
jQuery.fn.extend({
  foo: function() {
    this.each( function() { console.log(this.tagName); } );
    return this;
  }
})
票数 5
EN

Stack Overflow用户

发布于 2010-05-20 19:58:46

Tomalak已经发布了几乎所有你需要知道的内容。

还有最后一件事可以帮助jQuery使用this关键字完成此任务。

它的方法名为apply()

代码语言:javascript
复制
var somefunction=function(){
alert(this.text);
}
var anObject={text:"hello"};

somefunction.apply(anObject);
//alert "hello" will happen

它确实有助于创建抽象,这样框架/插件用户就可以像直觉告诉他们的那样使用这个,无论代码中有什么

票数 1
EN

Stack Overflow用户

发布于 2010-05-20 19:46:31

它和许多其他js框架一样,使用javascript原型导向。

例如,您可以声明一个简单的函数

代码语言:javascript
复制
var alertHelloWorld = function() {
    alert('hello world');
}

然后将其绑定到现有对象(包括DOM节点)

代码语言:javascript
复制
document.doMyAlert = alertHelloWorld;

如果你这样做

代码语言:javascript
复制
document.doMyAlert();

将执行alertHelloWorld函数

您可以阅读有关javascript对象原型here的更多信息

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2873257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档