$ .Deferred与新的$ .Deferred

时间:2013-05-14 04:11:40

标签: jquery jquery-deferred

之间有什么区别
var dfd = new $.Deferred

var dfd = $.Deferred

在哪些情况下你需要使用new而不使用它?

3 个答案:

答案 0 :(得分:9)

jQuery official documentation说:

  

“jQuery.Deferred()构造函数创建一个新的Deferred对象.new运算符是可选的。”

所以我认为使用明智,无论你是从Deferred创建一个新对象还是按原样使用它都没有任何区别。

答案 1 :(得分:8)

这两个不相等,一个创建一个不同的对象,而另一个创建一个别名

var dfd = new $.Deferred

它创建了一个延迟对象实例,用于创建新实例,不需要使用新关键字 - 您只需说var dfd = $.Deferred()

var dfd = $.Deferred

它为类型$.Deferred

创建别名

所以我认为没有必要在任何地方使用第二种格式,如果你想创建一个快捷方式,我希望如此。您可以使用第一种格式来创建延迟对象的新实例

答案 2 :(得分:3)

这些是相同的:

var dfd1 = $.Deferred();
var dfd2 = new $.Deferred;
var dfd3 = new $.Deferred();

每个都创建一个新的Deferred对象。 new是可选的,因为$ .Deferred是factory function

这可能是胡说八道:

var wtf = $.Deferred;

正如@ArunPJohny指出的那样,它只是将工厂函数别名化。它不会创建Deferred对象。