zoukankan      html  css  js  c++  java
  • Function模式 -- 深入理解javascript

    /*
        一、回调函数
        函数A作为另外一个函数B的参数
    */
        var menuId = $("ul.nav").first().attr("id");
        var request = $.ajax({
            url: "script.php",
            type: "POST",
            data: { id: menuId },
            dataType: "html"
        });
        //调用成功时的回调处理
        request.done(function (msg) {
            $("#log").html(msg);
        });
        //调用失败时的回调处理
        request.fail(function (jqXHR, textStatus) {
            alert("Request failed: " + textStatus);
        });
    /*
        二、配置对象模式
        如果一个函数的参数只有一个参数,且参数为对象
    */
        addPerson({
            username: "shichuan",
            first: "Chuan",
            last: "Shi"});
    /*
        三、返回函数
        一个函数的返回值为另外一个函数,或者根据特定的条件灵活创建的新函数
    */
        var setup = function () {
            console.log(1);
            return function () {
                console.log(2);
            }
        }
        var my = new setup();//1
        my();//2
        //或者
        setup()();//1//2
    
        //利用闭包的特性,记录私有静态属性
        var myFunc = function () {
            var count = 0;
            return function () {
                return ++count;
            }
        }
        var myObj = new myFunc();
        myObj();
        myObj();
    /*
        四、偏应用
        参数的传入工作分开进行
    */
    /*
        五、Currying
        将多个参数的处理转化成单个参数的处理,类似链式调用
    */
        function add(x, y) {
            var a = x, b = y;
            if (typeof b ==="undefined") {
                return function (newY) {
                    return a + newY;
                }
            }
            return x + y;
        }
        var add2000 = add(2000);
        add2000(10); // 2010
    /*
        六、立即执行的函数
    */
        (function () {
            //声明函数后,立即执行函数
        }());
        //以下4项:都是立即执行函数
        !function () { }();
        -function () { }();
        +function () { }();
        ~function () { }();
    /*
        七、立即执行的刚创建对象里的函数
    */
        ({
            name: "123",
            init: function () { }
        }).init();
    /*
        八、分支初始化
        根据不同的条件(场景)初始化不同的代码,也就是所谓的条件语句赋值
    */
    /*
        九、自声明函数
        一般是在函数内部,重写同名函数代码
    */
    /*
        十、内存优化
        该模式主要是利用函数的属性特性来避免大量的重复计算
    */
        var myFunc = function (param) {
            if (!myFunc.cache[param]) {
                var result = {};
                // ... 复杂操作 ...
                myFunc.cache[param] = result;
            }
            return myFunc.cache[param];
        };
    
        // cache 存储
        myFunc.cache = {};
  • 相关阅读:
    [netty4][netty-buffer]netty之池化buffer
    [netty4][netty-transport]netty之nio传输层
    JMX基本概念
    《JVM G1源码分析和调优》读书笔记
    clients-producer-网络处理与请求响应对接部分
    clients-producer-组包发送消息
    kafka-clients 1.0 高阶API消费消息(未完)
    MetadataCache更新
    副本同步
    将.py文件装成这执行文件.exe
  • 原文地址:https://www.cnblogs.com/ruanyifeng/p/4684262.html
Copyright © 2011-2022 走看看