var A = function(selector, context) {
return new A.fn.init(selector, context);
}
A.fn = A.prototype = {
constructor: A,
length: 2,
init: function(selector, context) {
this.length = 0,
context = context || document;
if (~selector.indexOf('#')) {
this[0] = document.getElementById(selector.slice(1));
this.length = 1;
} else {
var doms = context.getElementsByTagName(selector),
i = 0,
len = doms.length;
for (; i < len; i++) {
this[i] = doms[i];
}
this.length = len;
}
this.context = context;
this.selector = selector;
return this;
},
size: function() {
return this.length;
},
push: [].push,
sort: [].sort,
splice: [].splice
}
A.extend = A.fn.extend = function() {
var i = 1,
len = arguments.length,
target = arguments[0],
j;
if (i == len) {
target = this;
i--;
}
for (; i < len; i++) {
for (j in arguments[i]) {
target[j] = arguments[i][j];
}
}
return target;
}
A.fn.init.prototype = A.fn;
var extendDemo = A.extend({ first: 1 }, { second: 2 }, { third: 3 });
console.log(extendDemo);
A.extend(A.fn, { version: '1.0' });
console.log(A('demo').version);
A.fn.extend({ getVersion: function() { return this.version } });
console.log(A('demo').getVersion());
var demo = A('demo');
console.log(demo);
console.log(A('demo').size());
var news = A('li');
console.log(news);
console.log(demo);
console.log(A('news').length);