我想按照一些有趣的jQuery模式开发一个库(基本上是Builder和Prototype)。我试图阅读jQuery源代码并搜索教程,但没有到达任何地方。
我的想法是允许访问此类型:
grace(...)
可以直接调用grace.set(...)
可以有方法grace.fn.get = ...
可以设置新方法(function(window, undefined) {
"use strict";
//
var grace = function(options) {
return new grace.fn.init(options);
};
//
grace.fn = grace.prototype = {
//
set: function() {
alert("grace.set() OK");
},
//
init: function() {
alert("grace() OK");
},
};
//
window.grace = grace;
})(window);
可直接调用,但无法访问其方法。
答案 0 :(得分:2)
extend
方法应该添加到grace
和grance.fn
,当您想要向grace
添加新方法时,请使用grace.extend
;如果要向grace()
创建的实例添加新方法,请使用grace.fn.extend
。看看下面的代码:
(function(window, undefined) {
"use strict";
var grace = function(options) {
return new grace.fn.init(options);
};
grace.fn = grace.prototype = {
init: function() {
alert("grace() OK");
},
};
grace.extend = grace.fn.extend = function() {/* code here */}
grace.extend({ // add new methods to grace itself
set: function() {
alert("grace.set() OK");
}
})
grace.fn.extend({
/* add new methods to instances that grace() creates */
})
grace.fn.init.prototype = grance.fn;
window.grace = grace;
})(window);
注意: grace.fn.init.prototype = grance.fn
是必需的,因为new grace.fn.init(options)
会让对象从grace.init.prototype
继承方法。如果没有这行代码,您将无法获得grace.fn
的这些方法。
抱歉我的英文不好,抱歉没有可运行的代码。上面的希望代码将激励你。