По сути, вы собираетесь создать отдельный объект, который содержит каждый из ваших методов, а также хранит все данные, возвращаемые встроенными функциями.Это будет выглядеть примерно так (не проверено, но вы поняли идею):
var MyLib = {
getID: function(id) {
var element = document.getElementById(id);
this.length = 1;
this[0] = element;
return this;
},
getTag: function(tag) {
var elements;
if (this.length) {
for (var i = 0; i < this.length; i++) {
var byTag = this[i].getElementsByTagName(tag);
for (var j = 0; j < byTag.length; j++) {
elements.push(byTag[j]);
}
}
}
for (var i = 0; i < elements.length; i++) {
this[i] = elements[i];
}
this.length = elements.length;
return this;
}
};
Затем вы можете использовать это так:
var elements = MyLib.getID('myid').getTag('input');
for (var i = 0; i < elements.length; i++)
console.log(elements[i]); // Do something
Единственная реальная проблема с этим подходом(кроме того, что он очень сложен и сложен в отладке) заключается в том, что вы должны обрабатывать результат каждого метода как массив, даже если есть только один результат.Например, чтобы получить элемент по идентификатору, вам нужно будет сделать MyLib.getID('myid')[0]
.
Однако учтите, что это уже было сделано до .Я рекомендую вам взглянуть на jQuery , хотя бы для того, чтобы увидеть, как они этого добились.Ваш код может быть упрощен до следующего:
$("#myid input")
jQuery более легкий, чем вы думаете, и включение его на страницу не замедлит его.Вам нечего терять, используя его.