Brush interview questions summary

Write an event listener function?

(Corresponding to a package util major compatible browsers and IE)

var EventUtil = {
    //根据情况分别使用dom2 || IE || dom0方式 来添加事件
    addHandler: function(element,type,handler) {
        if(element.addEventListener) {
            element.addEventListener(type,handler,false);
        } else if(element.attachEvent) {
            element.attachEvent("on" + type,handler);
        } else {
            element["on" + type] = handler;
        }
    },

    //根据情况分别获取DOM或者IE中的事件对象,事件目标,阻止事件的默认行为
    getEvent: function(event) {
        return event ? event: window.event;
    },
    getTarget: function(event) {
        return event.target || event.srcElement;
    },
    preventDefault: function(event) {
        if(event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
    }

    //根据情况分别使用dom2 || IE || dom0方式 来删除事件
    removeHandler: function(element,type,handler){
        if(element.removeHandler) {
            element.removeEventListener(type,handler,false);
        } else if(element.detachEvent) {
            element.detachEvent("on" + type,handler);
        } else {
            element["on" + type] = null;
        }
    }

    //根据情况分别取消DOM或者IE中事件冒泡
    stopPropagation: function(event) {
        if (event.stopPropagation) {
            event.stopPropagation();
        } else {
            event.cancelBubble = true;
        }
    }
}

var btn = document.getElementById("myBtn"),
    handler = function () {
        alert("Clicked");
    };

EventUtil.addHandler(btn,"click",handler);
EventUtil.removeHandler(btn,"click",handler);

How to write code for good performance

http://developer.51cto.com/ar...

How to use js achieve a thousands separator

function format (num) {  
    var reg=/\d{1,3}(?=(\d{3})+$)/g;   
    return (num + '').replace(reg, '$&,');  
}
``

    function format(num){  
     num=num+'';//数字转字符串  
      var str="";//字符串累加  
      for(var i=num.length- 1,j=1;i>=0;i--,j++){  
          if(j%3==0 && i!=0){//每隔三位加逗号,过滤正好在第一个数字的情况  
              str+=num[i]+",";//加千分位逗号  
              continue;  
          }  
          str+=num[i];//倒着累加数字  
      }  
      return str.split('').reverse().join("");//字符串=>数组=>反转=>字符串  
    }  

Seeking a method of preparation of a byte string length

function getByte(str){
    var len = str.length,
        bytes = len,
        i = 0;
    for(; i<len; i++){
        if (str.charCodeAt(i) > 255) bytes++;
    }
    return bytes;
}


JavaScript How deep clone of an object


    function clone(obj) {
            if (!obj && typeof obj !== 'object') {
                return;
            }
            var copy = (obj instanceof Array)?[]:{};
            for(var o in obj) {
                if (typeof obj[o] === 'object') {
                    copy[o] = clone(obj[o]);
                } else {
                    copy[o] = obj[o];
                }
            }
            return copy;
        }
        var obj = {
            name: 'zhangsan',
            age: 33,
            child:{
                name:'zhangxiao',
                age:9,
                eat:[1,{el:2}]
            },
            hobby:undefined,
            eat:[1,2,3,4]
        }
        var a=clone(obj)
        obj.child.name = 'lis';
        console.log(a);

The following code operating results

    function say() {
        var num = 888;
        var sayAlert = function() { alert(num); }
        num++;
        return sayAlert;
    }
    var sayAlert = say();
    sayAlert();//889

Just call say () function when sayAlert not be executed, because there is no ah sayAlert () called with

How to achieve Array.prototype.forEach?

if (!Array.prototype.forEach) {
    Array.prototype.forEach = function(fn){
        for ( var i = 0; i < this.length; i++ ) {
            fn( this[i], i, this );
        }
    };
}

js how to obtain a non-inline style

function getStyle(obj, attr){
      if(obj.currentStyle) {
        obj.currentStyle[attr]
      } else {
        getComputedStyle(obj, null)[attr];
      }
}

The highest number of elements in an array and the number of requirements appear

<script>
        var arr = [1,1,1,4,5,4];
        var obj = {};
        for(var ar in arr){
            if(obj[arr[ar]]){
                obj[arr[ar]]++;
            } else {
                obj[arr[ar]] = 1;
            }
        }
        console.log(obj);
        var res = [];
        for(var o in obj) {
            res.push({el: o,val:obj[o]});
        }
        res.sort(function(a,b){
                return  -(a.val-b.val);
        })
        console.log(res[0])
    </script>

Guess you like

Origin www.cnblogs.com/baimeishaoxia/p/11966656.html