CodeSky 代码之空

随手记录自己的学习过程

Javascript 面向对象好,如何实现简单jQuery

2015-02-24 16:49分类: JavaScript评论: 0

这篇文章和jQuery其实是完全没有关系的,只是我始终无法理解,直接实现DOM不就好了,OOP有什么实践价值么?

于是师匠通过一例,似乎让我有点收获嘛~至少感觉这样写,比我过去写的function都优雅不少。

1var DOM = {};
2
3function ElementCollection(elements) {
4	this._elements = elements || [];
5}
6
7function Element(element) {
8	this.element = element || document.documentElement;
9}
10
11Element.prototype.select = function(selector) {
12	return new ElementCollection(this._element.querySelectorAll(selector));
13}
14
15ElementCollection.prototype.forEach = function(cb) {
16	return Array.prototype.forEach.call(this._elements, cb);
17}
18
19DOM.select = function(selector) {
20	var el = DOM.from();
21	return el.select.apply(el, arguments);	
22}
23
24DOM.from = function(element) {
25	return new Element(element);
26};
27
28ElementCollection.prototype.style = function(name, value) {
29	this.forEach(function(el, index) {
30		el.style[name] = value;
31	});
32};
33

然后我们可以像jQuery那样愉快的玩耍啦。并且这一例中用的call和apply感觉也很灵活呀,就像我以前看到的那样,call多用于参数确定个数的情况,而apply用户参数可能变化的情况(或者说未来我改动这个函数怎么办的情况)

评论 (0)