【问题标题】:how to create a wrapper for jquery? [closed]如何为 jquery 创建一个包装器? [关闭]
【发布时间】:2013-09-18 00:48:10
【问题描述】:

我去过这个帖子,但没有找到我的答案。 How to create a Wrapper

我的问题是如何为 jquery ajax 之类的 jquery 函数创建一个包装器,以及它是如何工作的。

如果有人可以提供一个小提琴或一个非常简单的包装 jquery ajax 的示例,我将不胜感激。

谢谢。

【问题讨论】:

  • 您希望“$.ajax 包装器”做什么?
  • 我想,一个会包装$.ajax的脚本,所以我们不会直接调用$.ajax。我对包装器感到困惑。
  • 您有特定的用例吗?您有什么特别的用途吗?
  • 我将使用它通过创建一个包装器来包装 jquery 函数,而其他开发人员将使用该包装器,因此他们不会介意 jqueries/dojo/etc.. 后面的内容。

标签: javascript jquery ajax


【解决方案1】:

我可以只使用纯 javascript 而不是 jquery 代码来创建包装器吗? 谢谢小伙伴的回答,很有帮助

像这样?

var ajax = (function ($) {
    return function () {
        return $.ajax.apply($, arguments);
    };
})(jQuery);

如果不真正理解为什么要创建 wrapper 以及您期望从这个 wrapper 中得到什么,就无法真正回答这个问题?

上面的ajax 包装器 只是一个将其工作委托给$.ajax 的函数。基本上就像现在一样,它几乎与执行var ajax = $.ajax; 相同,唯一的区别是this 值将在调用$ 时正确绑定到$

包装器可以是很多东西,但大多数时候它充当adapter,它基本上是一个为不兼容对象提供统一接口的对象。

$.ajax 本身就是这种模式的完美示例,因为它处理跨浏览器问题,例如不支持标准 XMLHttpRequest 对象的浏览器。

您还可以使用 包装器 来模仿 AOP 功能,这对于横切关注点非常有用。

【讨论】:

  • 感谢您的回复,我正在调查。
【解决方案2】:

如果您经常做同样的事情来修改现有方法,那么包装器很有用。假设您经常使用$.get,但每次都必须为数据添加一个键。写一个包装器。

$.fn.extend({betterget: function(url, data, success, dataType) {
    data['key'] = 'foo';
    $.get(url, data, success, dataType);
}});

因此,您可以将呼叫从 $.get(...) 更改为 $.betterget(...),并且将始终设置常用键。

这就是它的全部内容。剩下的就看你的想象和需要了。

编辑

“我可以只使用纯 javascript 而不是 jquery 代码来创建包装器吗?”

当然:

function betterget(url, data, success, dataType) {
    data['key'] = 'foo';
    $.get(url, data, success, dataType);
}

这使您可以调用betterget,它将为您完成 jquery 工作。

【讨论】:

  • 我可以只使用纯 javascript 而不是 jquery 代码来创建包装器吗?谢谢小伙伴的回答,很有帮助。
猜你喜欢
  • 2020-03-17
  • 2021-02-20
  • 2012-09-27
  • 2022-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
相关资源
最近更新 更多