帮忙解释一下这段js代码

varMyQuery=$=function(selector){if(window==this){returnnewMyQuery(selector);}//这里只实现d... var MyQuery = $ = function(selector){ if ( window == this ){ return new MyQuery(selector); } //这里只实现dom类型的简单查找 var doms = document.getElementsByTagName(selector); var arr = []; for(var i=0; i<doms .length; i++){ arr.push(doms[i]); } return this.setArray(arr); //【4】 } MyQuery.prototype.setArray = function( arr ) { this.length = 0; //【1】 [].push.apply( this, arr ); //【2】 return this; //【3】 } //【1】处:什么意思,有什么作用? //【2】处:[].是什么? .apply(this,arr)这句是什么意思? this代表谁? //【3】处:这个返回的this是什么? //【4】处:返回的是什么?MyQuery对象实际代表的是什么?(对象还是数组?) 展开
 我来答
N抢楬
2014-09-07 · TA获得超过293个赞
知道答主
回答量:109
采纳率:0%
帮助的人:138万
展开全部
1、this.length意识是为MyQuery添加一个length属性 相当于var MyQuery = function (arr){ this.length = 0; } 对象的属性即可以在构造函数中定义,也可以在方法中动态定义,而setArray就是MyQuery的一个方法 如果你尝试一下代码就知道了 var test = new MyQuery( 'li' ); alert( test.lenght ); 2、数组有两种定义方法 一种是var arr = new Array(),一种是var arr = []; 和对象的定义一样 var obj = new Object()或var obj = {}; //-------------------- 这里的this指向的是MyQuery类本身 你可以在构造函数中添加一个属性然后在setArray中alert一下.例如(黑色部分): var MyQuery = $ = function(selector){ this.name = 'gray';//测试添加 if ( window == this ){ return new MyQuery(selector); }//...... 然后再 [].push.apply( this, arr ); //【2】 添加一个 alert( this.name ); //看一下是否能弹出对话框 //-------------------- apply方法讲起来比较麻烦 吃晚饭跟帖再单独将 3、返回对象本身,也就是MyQuery 4、返回执行过setArray后的对象本身,也就是MyQuery
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式