哪种形式的初始化更好?

时间:2013-03-23 20:00:30

标签: javascript jquery

当我第一次开始编写自己的代码时,我永远不会理解jQuery的'增强'init构造函数,直到后来才开始构建我的对象。我想知道我是应该保留旧方法还是开始使用我自己的'增强'init构造函数。


我的构造函数:

var $ = function(selector,context,createObj) {
        if(createObj) {
           // actually initiating object
        } else {
           return new $(selector,context,true);
        }
};

jQuery的:

jQuery = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
};

实际初始值:

init: function( selector, context, rootjQuery ) {
    // some code
}

更改原型(jQuery.prototype.init.prototype = jQuery.prototype):

jQuery.fn.init.prototype = jQuery.fn;

1 个答案:

答案 0 :(得分:2)

jQuery's constructor pattern是历史上的成长和不良做法 - 或者至少是不必要的复杂。如果您想要一个在没有new的情况下运行良好的构造函数(如果应用错误),请使用

function $(selector, context) {
    if (this instanceof $) {
        // actually initiating object
    } else {
        return new $(selector, context);
    }
}