jQuery.Deferred() - “new”运算符是可选的吗?

时间:2012-08-13 07:59:33

标签: jquery new-operator jquery-deferred

jQuery如何实现其Deferred对象,以便new运算符在var x = $.Deferred();中是可选的?

1 个答案:

答案 0 :(得分:6)

这是实现这一目标的模式......

$.Deferred = function() {
    if ( ! (this instanceof $.Deferred)) {
        return new $.Deferred;
    }
}

它起作用,因为构造函数中的this设置为新对象。 instanceof将告诉您LHS操作数是否在其原型链中具有RHS操作数。如果此条件不成立,则该函数将返回对象的实例化版本。