您的位置:首页 > 职场人生

前端面试笔试题学习--后延/以后学习01

2018-02-09 17:37 585 查看
1、 实现以下方法(与标准一致)
Element.prototype .getElementsByclassname
element.prototype.getElementsByClassName = function (searchClass, node,tag) {
  if(document.getElementsByClassName){
 var nodes =  (node || document).getElementsByClassName(searchClass),result = [];
for(var i=0 ;node = nodes[i++];){
         if(tag !== "*" && node.tagName === tag.toUpperCase()){
           result.push(node)
         }
       }
       return result
    }else{
      node = node || document;
      tag = tag || "*";
      var classes = searchClass.split(" "),
elements=(tag==="*"&&node.all)?node.all:node.getElementsByTagName(tag),
      patterns = [],
      current,
      match;
      var i = classes.length;
      while(--i >= 0){
        patterns.push(new RegExp("(^|\\s)" + classes[i] + "(\\s|$)"));
      }
      var j = elements.length;
      while(--j >= 0){
        current = elements[j];
        match = false;
        for(var k=0, kl=patterns.length; k<kl; k++){
          match = patterns[k].test(current.className);
          if (!match)  break;
        }
        if (match)  result.push(current);
      }
      return result;
    }
  }
 
Function.Prototype.bind
Function.prototype.bind = function (oThis) {
        if (typeof this !== "function") {
          throw new TypeError("bind function error");
        }
        var aArgs = Array.prototype.slice.call(arguments,1),
            fToBind = this,
            fBound = function () {
              return fToBind.apply(oThis || window,aArgs.concat(Array.prototype.slice.call(arguments)));};
        return fBound;
      };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: