前端面试题

  1. 事件冒泡(选项卡的实现)http://jsbin.com/hecaw/1/edit
  2. addEventListener 实现对事件的冒泡和捕获处理,需要定义到父节点上才能生效!!如果定义到本身的话,无论你的第三个参数是true or false 都是失效的,当然这个就不是冒泡和捕获情况了jsbin
  3. 前端的延迟请求:1.在script标签中使用defer属性可以达到延迟加载2.可以通过html5的prefetch来使用,这个可以为将来某个页面提前加载 资料:prefetch
  4. 语义化标签:http://ued.ctrip.com/blog/?p=2735
  5. 元素(height:200px;width:200px)水平垂直居中:下面是利用定位解决居中问题,同时可以使用display:table-cell & vertial-align:middle 这两个组合来使用。
    .content{
      position: absolute;
      left: 50%;
      top: 50%;
      margin-top:-100px;
      margin-left: -100px;
    }
    7.如何add padding char?
  6. 如何add padding char?
    function( count, char ){
      var char = char || 0;
      if(char == 0){
        return (Math.pow(char, count )+"").substr(1);
      }
    }
    这里char的默认值是0,这只是一个例子,当然也可以使用underscore.js的功能函数来实现:
    function( count, chart){
     var result = "",
           isNumber = _.isNumber(count);
      if( !isNumber ) return "count isn't number";
    
      _(3).times(function(){result +=char;}
      return result;
    )
    }
    可能会想到用for这种简单又粗暴的方式解决,效率当然是最高的。但维护起来成本会增加,当你把你的逻辑封装一个函数里面,时间长了就不会写一大段一大段的代码了,喜欢用框架的原因吧。
  7. 合并数字数组
      var arr = [2,3,[4,6,[3,8]],12,10];
    
      function collapseArr(arr){
        var result = [];
    
        function collase(a){
          for(var i=0;i<a.length;i++){
            if( Object.prototype.toString.call(a[i]) ==  "[object Array]"){
              collase(a[i]);
            }else{
              result.push(a[i]);
            }
          }
        }
    
        collase(arr);
        return result;
      }
    
      console.log(collapseArr(arr))
    8.字符串数组连接


  8. var arr = ['a','b',['c','d']];
    
    arr.join('#').split('#');//["a", "b", "c,d"]---->
    arr.join(',').split(',');//[结果]
    
    
    
    
    
    
    
    
    
    
  9. 数组去重问题!
    Array.prototype.distinct = function(){
         var self = this;
         var _a = this.concat().sort();
         _a.sort(function(a,b){
             if(a == b){
                 var n = self.indexOf(a);
                 self.splice(n,1);
             }
         });
         return self;
     };
    当涉及数组的时候的很多应用都和关联数组有关,也就是含有length属性的对象!比如,jQuery
  10. 如何实现下列代码:[1,2,3,4,5] to [1,2,3,4,5,1,2,3,4,5
    Array.prototype.duplicato = function(flag){ 
       //flag==true -> self
       var length = this.length,
           that = flag ? this : [];
       for(var i=0; i<length; i++){
         that[ i + length ] = flag ? this[i] : that[i] = this[i];
       }
       return that;
     }
    但是有没有想过duplicato已经有了,就是array实例的属性呢?      var myFunc = typeof array.duplicato == "function" ? array.duplicato : array.constructor.prototype.duplicato;    myFunc && array.myFunc();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值