$()每调用一次,就需要实例化一个(有着很多封装方法)的类数组对象,然后返回, jQuery对象实现原理
模拟原理源码: (我命名为factory)
function factory(value) {
//获取dom对象的数组
var arr = document.getElementsByTagName(value);
//构造函数
function Fun() {
//这里就是写各种方法的地方
this.name = value;
this.getName = function () {
return this.name;
};
this.getLength = function () {
return this.length;
};
this.css = function (key,value) {
for (var i = 0; i< this.length; i++) {
this[i].style[key] = value;
}
return this;
}
}
var obj = new Fun(); //实例化一个对象
[].push.apply(obj,arr); //将对象压入数组,并改变数组的指向
return obj; //将类数组对象返回
}
调用一下,看下效果
console.log(factory("ul"));
console.log(factory("ul").name);
console.log(factory("ul").getName());
console.log(factory("ul").css("background", "red"));
注释: 简单模拟只能传一个标签名