Javascript 面向对象好,如何实现简单jQuery
这篇文章和jQuery其实是完全没有关系的,只是我始终无法理解,直接实现DOM不就好了,OOP有什么实践价值么?
于是师匠通过一例,似乎让我有点收获嘛~至少感觉这样写,比我过去写的function都优雅不少。
var DOM = {};
function ElementCollection(elements) {
this._elements = elements || [];
}
function Element(element) {
this.element = element || document.documentElement;
}
Element.prototype.select = function(selector) {
return new ElementCollection(this._element.querySelectorAll(selector));
}
ElementCollection.prototype.forEach = function(cb) {
return Array.prototype.forEach.call(this._elements, cb);
}
DOM.select = function(selector) {
var el = DOM.from();
return el.select.apply(el, arguments);
}
DOM.from = function(element) {
return new Element(element);
};
ElementCollection.prototype.style = function(name, value) {
this.forEach(function(el, index) {
el.style[name] = value;
});
};
然后我们可以像jQuery那样愉快的玩耍啦。并且这一例中用的call和apply感觉也很灵活呀,就像我以前看到的那样,call多用于参数确定个数的情况,而apply用户参数可能变化的情况(或者说未来我改动这个函数怎么办的情况)
植入部分
如果您觉得文章不错,可以通过赞助支持我。
如果您不希望打赏,也可以通过关闭广告屏蔽插件的形式帮助网站运作。