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用户参数可能变化的情况(或者说未来我改动这个函数怎么办的情况)

如果您觉得文章不错,可以通过赞助支持我

标签: 知识, 代码段, 语法

添加新评论