注册 登录
编程论坛 JavaScript论坛

菜鸟:求解析下面代码

小程序员 发布于 2011-04-22 10:00, 543 次点击
document.getElementsByClassName = function(cl) {
  var retnode = [];
  var myclass = new RegExp('\\b'+cl+'\\b');
  var elem = this.getElementsByTagName('*');
  for (var j = 0; j < elem.length; j++) {
   var classes = elem[j].className;
   if (myclass.test(classes)) retnode.push(elem[j]);
  }
  return retnode;
 }

我搜了一下,javascript的document对象本身并没有getElementsByClassName的方法,不是要定义的吗?不定义怎么使用呀?
还是这句话可以这样理解:function  document.getElementsByClassName (c1){}就是定义一个函数?可是为什么要搞这么复杂,这样子写呢?这样写仅仅是为 了美观吗???
求解,另外,请各位帮我推荐一本javascript的书,要好一点的书,现在市面上很多书都是滥竽充数赚钱的。。。。。
3 回复
#2
foktime2011-04-22 16:37
就是给document对象定义一个名为getElementsByClassName的静态方法
也可以写成这样:
function getElementsByClassName(){
    //code;
}
getElementsByClassName();//调用


var getElementsByClassName = function(){
    //code;
}
getElementsByClassName();//调用


var myObj = {
    getElementsByClassName:function(){
        //code;
    }
}
myObj.getElementsByClassName();//调用

最后一种写法其实和你问的这种是一回事,只不过问题中是直接给现有的document对象去定义方法了,原理一样的。
#3
foktime2011-04-22 16:42
书的话,初学者选择比较多的有《javascript宝典》或者《javascript王者归来》等。

个人推荐《javascript王者归来》,作者是51js版主月影,可以说是国内这个领域大牛级别的人物了。内容有浅有深,认真读几遍,还是会让人受益匪浅的


[ 本帖最后由 foktime 于 2011-4-22 16:44 编辑 ]
#4
小程序员2011-04-28 19:27
我慢慢看,谢谢了
1