什么是jQuery中的工厂函数

What is a factory function in jQuery?

本文关键字:工厂 函数 jQuery 什么      更新时间:2023-09-26

在一篇文章中,我读到了jQuery中的工厂函数,但我在互联网上找不到任何关于它的信息。他们是什么,他们做什么?

工厂函数通常返回新对象,而无需使用 new 关键字显式创建它们。

$.Deferred() 是一个工厂函数,用于创建新的Deferred对象。 $.when()创建promise对象(一种与延迟相关的对象类型)。

但是如果你退后一步,$()本身就是一个工厂函数 - 它创建新的jQuery对象。其他一些jQuery API函数也是工厂,即当它们创建新的jQuery对象时(例如,所有遍历类型函数都是jQuery中的工厂,但其他函数也是如此)。

jQuery的主要目的是你可以保持"流畅的接口"编程风格:

   $("body").css("color", "red").find("a").show().parent().addClass("foo");
//-^-----------------------------^----------------^------------------------

在这里,^标志着工厂。

我不是专家,但我知道工厂方法与 $(document).ready() 相同。 基本上你可以传递$()在页面加载后运行函数。 as $(function(){ });它与 $(document).ready(function(){}) 相同;

它是一种创建性设计模式。您请求一个具有给定参数作为输入的对象,函数将返回多个相关对象/函数系列之一。

前任。

function car(name, color,speed) {
var obj = new Object();
//now you can create custom object as per requirement
obj.name = name;
obj.color = color;
obj.speed = speed;
    obj.customFunc = function(){
        console.log("Car name : " + this.name );
    }
    return obj;
}
var customCar = car("carName","red","100kmph");
//log: carName
customCar.customFunc()

在 JavaScript 的上下文中,工厂模式在运行时创建与浏览器兼容的对象时很有用。例如,XHR 对象是通过在 Firefox、Chrome 和 IE 7+ 中调用"new XMLHttpRequest()"创建的,但在旧版本的 IE 中,此对象是通过 ActiveX 对象创建的,即使这些对象都共享同一组 Level 1 AJAX 方法。可以编写一个包装函数,例如 Nano AJAX 库中的 xmlHTTPRequestObject 函数在运行时检测对象可用性,并相应地实例化正确的对象。这种包装函数被认为是"工厂函数"。

在jQuery中,大多数工厂函数不会基于浏览器返回不同的对象。但是,最终用户不必选择特定于实现的对象。例如,"汽车租赁工厂"会为您提供租车。无法保证汽车的品牌或型号。即使是jQuery租赁公司中唯一的品牌被称为"J1",他们仍然不希望你说出具体的汽车。这允许库切换到不同的实现,比如将来的"J2"。工厂模式隐藏了有关"如何完成"的信息,但为用户提供了统一的界面来表达"需要什么"。

在面向对象编程中,工厂是用于创建的对象 其他对象 – 正式的工厂只是一个返回 来自某个方法调用的对象,假定为"new"。

来自维基百科

这是一种设计模式。

也称为虚拟构造函数,工厂方法与 关于哪些库工作的想法:库使用抽象类 定义和维护对象之间的关系。一种类型的 责任是创造这样的对象。图书馆知道何时 需要创建对象,但不是应该创建哪种对象 创建,这是特定于使用库的应用程序。

Factory 方法的工作方式相同:它定义了一个接口 用于创建对象,但将其类型的选择留给 子类,创建在运行时延迟。简单的现实生活 工厂方法的例子是酒店。入住酒店时 您首先必须办理登机手续。在前台工作的人将 在你支付你想要的房间后,给你一把房间的钥匙 这样,他就可以被视为一个房间工厂。入住期间 酒店,你可能需要打个电话,所以你打电话给前面 服务台和那里的人会为您连接您需要的号码, 成为电话工厂,因为他控制了对电话的访问 电话也是。

(来源:http://www.oodesign.com/factory-method-pattern.html)

此链接也是有关工厂方法的良好信息。