zoukankan      html  css  js  c++  java
  • javascript之奇淫技巧

    最近准备面试,复习一下javascript,整理了一些javascript的奇淫技巧~

    //为兼容ie的模拟Object.keys()

    Object.showkeys = function(obj) {
        var a=[]; 
        for(a[a.length] in obj);
            return a;
    }    

    那么大家怎么模拟Object.keys()呢?是不是循环obj,再循环a数组赋值呢,反正一开始我就是这么想的,后来看到a[a.length]觉得蛮厉害的。

    //mass Framework的合并对象,支持深拷贝的方法

    function mix(target,source){
        var args=[].slice.call(arguments);
        var ride=typeof args[args.length-1]=='boolean'?args.pop():true;//判断深拷贝的布尔,一句话经典
    ...
    }

    一句话把是否是深拷贝的布尔值表示出来,简洁,高效,记录之。

    // jq的makeAarry的复制数组

    var i=array.length;
    while(i)
        ret[--i]=array[i]

    jquery的复制数组部分代码,蛮不错的。

    //判断函数可以用return返回,其他情况下还可以减少对象的实例;

    var toAarry =function(){
      return isIE()?    function(a,i,j,res){...}//以后每次执行都不用判断了,直接取toAarry
      : function(a,i,j){...}

    这个方法是很多框架,前端都在用的,function,object,return的时候判断一下,比如第一次判断了你浏览器,以后就不用再判断了,直接用返回的东西。js设计模式很多也都用了这个模式,很高效的说。

    // fn.call(window)的另一种写法

    (0,fn)()

    来自babel转码中的应用

    持续更新~

  • 相关阅读:
    P1908 逆序对
    P3834 【模板】可持久化线段树 1(主席树)
    BZOJ 4300: 绝世好题
    Codevs 2185【模板】最长公共上升子序列
    P1439 【模板】最长公共子序列
    P3865 【模板】ST表
    【转】良心的可持久化线段树教程
    Codevs 1299 切水果
    P3388 【模板】割点(割顶)&& 桥
    P3805 【模板】manacher算法
  • 原文地址:https://www.cnblogs.com/dh-dh/p/5077215.html
Copyright © 2011-2022 走看看