前端常用的库和实用技术之JavaScript高级函数
1.惰性载入函数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
        // 创建了各个浏览器下面可以访问的xhr对象
        function createXHR(){
            var xhr = null;
            try{
                xhr = new XMLHttpRequest();
            }catch(e){
                // handleErr(e);
                try{
                    xhr = new ActiveXObject("Msxml2.XMLHTTP");
                }catch(e){
                    try{
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }catch(e){
                        xhr =null;
                    }
                }
            }
            return xhr;
        }
        console.log(e);
    //    function handleErr(err){
    //        var errXHR = err;
    //    }
    // 惰性函数
    // 第二次运行时加载
    function createXHR(){
        var xhr = null;
        if(typeof XMLHttpRequest!='undefined'){
            xhr = new XMLHttpRequest();
            createXHR=function(){
                return new XMLHttpRequest();
            }
        }else{
            try{
                xhr = new ActiveXObject('Msxml2.XMLHTTp');
                createXHR = function(){
                    return new ActiveXObject('Msxml2.XMLHTTP');
                }
            }catch(e){
                try{
                    xhr = new ActiveXObject('Microsoft.XMLHTTP');
                    createXHR = function(){
                        return new ActiveXObject('Microsoft.XMLHTTP');
                    }
                }catch(e){
                    createXHR = function(){
                        return null;
                    }
                }
            }
        }
        return xhr;
    }
    </script>
</body>
</html>
2.函数柯里化
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
    //   合并参数 第一个函数的参数合并成整体的 传递给统一的函数
      function add(num1,num2){
          return num1+num2;
      }
      function totalAdd(num3){
          return 50+add(1,2)
      }
      alert(totalAdd(50));
    </script>
    <script>
    function curry(fn){
        var args = Array.prototype.slice.call(arguments,1);
        console.log('args...',args);
        return function(){
            var innerArgs = Array.prototype.slice.call(arguments);
            console.log('innerArgs',innerArgs);
            var finalArgs = args.concat(innerArgs);
         console.log('.finalArgs...',finalArgs);
            return fn.apply(this,finalArgs);
        }
    }
    function add(num1,num2,num3){
        return num1+num2+num3;
    }
    var t = curry(add,50)(1,2);
    alert(t);
    </script>
</body>
</html>
3.级联函数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
    function classA(){
        this.lian = "";
        this.zui = "";
        this.tui = "";
    }
    // 原型链的constructor指定回来
    classA.prototype = {
        setLian:function(){
            this.lian = "红彤彤";
            return this;
        },
        setZui:function(){
            this.zui = "大嘴";
            return this;
        },
        setTui:function(){
            this.tui = "长腿欧巴"
        }
    };
    var person = new classA();
    // person.setLian();
    // person.setZui();
    // person.setTui();
    // 级联函数,把相关属性的东西全部串起来
    person.setLian().setZui().setTui();
    console.log(person);
    // $('#btn').html().val().attr();
    </script>
</body>
</html>
by上面的例子其实不够经典也不够高级
本文看自前端常用的库和实用技术之JavaScript高级函数
前端常用的库和实用技术之JavaScript高级函数的更多相关文章
- 前端常用的库和实用技术之JavaScript多线程
		多线程概念: 多线程是指从软件或硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在 同一时间执行多于一个线程,进而提升整理处理性能.具有这种能力的系统包括对称多处理机,多核心 ... 
- 前端常用的库和实用技术之JavaScript面向切面编程
		Aspect Oriented Programming(AOP)面向切面编程是一个比较热门的话题. AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程 中的某个步骤或阶段,以 ... 
- 前端常用的库和实用技术之JavaScript高级技巧
		javascript高级技巧 变量作用域和闭包 <!DOCTYPE html> <html lang="en"> <head> <meta ... 
- 前端常用的库和实用技术之JavaScript 模块化
		模块化概念 AMD是requirejs在推广过程中对模块化定义的规范化产出. 异步加载模块,依赖前置,提前执行 Define定义模块define(['require','foo'],function( ... 
- C语言常用的库文件(头文件、函数库)
		C语言常用的库文件(头文件.函数库) C系统提供了丰富的系统文件,称为库文件.C的库文件分为两类,一类是扩展名为".h"的文件,称为头文件,在前面的包含命令中我们已多次使用过.在& ... 
- javascript高级函数
		高级函数 安全的类型检测 js内置的类型检测并非完全可靠,typeof操作符难以判断某个值是否为函数 instanceof在多个frame的情况下,会出现问题. 例如:var isArray = va ... 
- JavaScript高级 函数表达式  《JavaScript高级程序设计(第三版)》
		函数表达式的特征 使用函数实现递归 使用闭包定义私有变量 前面我们说到定义函数有两种方式:函数声明.函数表达式. 两者的区别在于函数声明提升,前者在执行之前的上下文环境中直接被赋值,而后者不会. 一. ... 
- 对于JavaScript的函数.NET开发人员应该知道的11件事
		(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 昨天小感冒今天重感冒,也不能长篇大论.如果你是.NET开发人员,在进入前端开发领域的时候,对 ... 
- javascript功能插件大集合 前端常用插件 js常用插件
		转载来源:https://github.com/jobbole/aw... 包管理器管理着 javascript 库,并提供读取和打包它们的工具.•npm – npm 是 javascript 的包管 ... 
随机推荐
- Gerrit Handbook for Commercial Project
			前注:常见‘坑’ 不要使用 2.14 版本 gerrit.conf 中 [sendemail] 部分必须有 from = ... 字段,否则无法添加邮箱 gerrit 以用户组为单位划分权限,先将用户 ... 
- 剑指offer——67左旋转字符串
			题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ... 
- 面试总结【css篇】- css选择器以及优先级
			优先(优先级为): !important > 内联样式 > #id > .class > tag > * > 继承 > 默认 . 当选择器的权重相同时,它将 ... 
- 53-Ubuntu-打包压缩-3-gzip压缩和解压缩介绍
			gzip tar与gzip命令结合可以实现文件打包和压缩. tar只负责打包文件,但不负责压缩. 用gzip压缩tar打包后的文件,其扩展名一般为xxx.tar.gz. 注:在Linux中,最常见的压 ... 
- 怎样有效防止ddos
			怎样有效防止ddos?当我们发现服务器被DDoS攻击的时候,不要过度惊慌失措,先查看一下网站服务器是不是被黑了,找出网站存在的黑链,然后做好网站的安全防御,开启IP禁PING,可以防止被扫描,关闭不需 ... 
- 枚举对象中的属性 for . .  in
			枚举对象中的属性:把对象中所有的属性和值都取出来 使用 for . . . in 语句 语法: for(var 变量 in 对象){ } for . . . in 语句 对象中有几个属性,循 ... 
- D2D
			layout category title permalink posts_by_category D2D 渲染相关 /post/D2D.html 
- 笔记:TCP/IP基础知识
			TCP/IP是指利用IP进行通信时必须用到的协议群的统称. 互联网层(网络层) IP IP是跨越网络传送数据包,使整个网络都能收到数据的协议.IP地址在发送数据的时候作为主机的标识. ICMP 用来诊 ... 
- 微信小程序  初阶
			公司最近安排要学习一下微信小程序的开发,大体看了看,幸亏还有点javascript的底子,学起来不至于太难,其它的语法什么的真需要好好适应适应....头大 从头开始看微信小程序开发的文档,目前来说没有 ... 
- Opencv 特征提取与检测-图像特征描述
			图像特征描述 什么是图像特征 可以表达图像中对象的主要信息.并且以此为依据可以从其它未知图像中检测出相似或者相同对象 常见的图像特征 常见的图像特征  边缘  角点  纹理 图像特征描述  描 ... 
