什么是jQuery中的工厂函数
What is a factory function in jQuery?
在一篇文章中,我读到了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)
此链接也是有关工厂方法的良好信息。
- Jasmine测试工厂函数调用本地函数和另一个函数-获取错误:应该是间谍,但得到了function
- 为什么我没有从angularJS中的这个工厂函数中得到响应
- 工厂函数给出“;错误:未定义
- 什么是jQuery中的工厂函数
- AngularJS 工厂函数无法访问本地存储的缓存变量
- 工厂函数不返回数据
- 打字稿中的工厂函数语法
- 调用工厂函数会触发错误
- 在JS模块加载的上下文中,什么是立即执行的工厂函数
- Angular工厂函数需要返回一些东西吗
- 如何从外部调用Angularjs工厂函数
- AngularJS文档:工厂函数没有返回任何内容
- 构造函数与工厂函数
- 在Angular中,如何等待工厂函数完成并处理输出?
- Angular js的模态弹出式调用工厂函数
- 在AngularJS中,如何让一个工厂函数引用另一个工厂函数?
- AngularJS控制器使用工厂函数
- 如何定义一个同名的Typescript构造函数和工厂函数
- ES.下一个装饰器可以直接调用,也可以作为工厂函数调用
- 工厂函数的依赖注入(AngularJS)