如果我想返回一个包含在原型定义对象中的HTML dom元素,以便能够访问添加到原型的方法,那么我将如何处理它。 我想要实现的更具体的例子如下:
(function(window, document, undefined) {
var i;
var el;
var Dome = function(selector, getAllMatches) {
return Dome.core.init(selector, getAllMatches);
};
Dome.core = Dome.prototype = {
constructor: Dome,
el: "",
init: function(selector, getAllMatches) {
if (typeof arguments[0] !== "undefined") {
this.el = getElement(selector);
if (this.el instanceof Dome){
return this.el;
}
else{
return this.el;
}
}
}
.....
})(window, document);
我想要实现的是返回而不是this.el一个实例的Dome,所以我可以访问它的方法。我知道jquery做得很好,但我没有那么多经验,js接近于0原型。
答案 0 :(得分:1)
听起来像是想要Factory?
function Dome(element){
this.element = element;
this.getElement = function(){
return this.element;
}
}
Dome.factory = function(selector){
var el = getElement(selector);
return new Dome(el);
}
var d = Dome.factory('test');
alert(d.getElement());
+编辑+
既然你问过jQuery是如何做到的,我只是快速看一下......
所以主要的jQuery工厂($,jQuery)是;
jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
return new jQuery.fn.init( selector, context, rootjQuery );
}
然后,jQuery.fn.init从jQuery.fn填充了它的原型。
因此,编辑我的原始答案以匹配此格式将是;
function Dome(element){
this.element = element;
}
Dome.core = {
getElement: function(){
return this.element;
}
};
Dome.prototype = Dome.core;
Dome.factory = function(selector){
var el = getElement(selector);
return new Dome(el);
}
var d = Dome.factory('test');
alert(d.getElement());