3

当我第一次开始编写自己的代码时,直到后来我才理解 jQuery 的“增强”初始化构造函数,所以我坚持使用不同的方式来构造我的对象。我想知道我是否应该保留我的旧方法或开始使用我自己的“增强”初始化构造函数。


我的构造函数:

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;
4

1 回答 1

2

jQuery 的构造函数模式在历史上是增长的并且是不好的实践——或者至少是不必要的复杂。如果您想要一个运行良好的构造函数new(如果应用错误),请使用

function $(selector, context) {
    if (this instanceof $) {
        // actually initiating object
    } else {
        return new $(selector, context);
    }
}
于 2013-03-23T20:19:46.950 回答