`

JavaScript 学习笔记十一 函数高级应用

 
阅读更多

 var logs = function (str) {
            document.writeln(str + "<br>");
        }

        //利用闭包,保存两个对象各自成员的值,避免两个对象的成员的值影响
        var s = function () {
            var i = 0;
            return function () {
                return i++;
            }
        }
        var aa = s();
        logs(aa()); //aa 对象返回 0
        var ab = s();
        logs(ab()); //ab 对象返回 0
        logs(aa());  //aa 对象返回 1
        logs(ab()); //ab 对象返回 1

        var sdd = Base.extend({
            constructor:function () {
                this.name = 'bb';
            },
            name:"sdd",
            age:10,
            getName:function () {
                return this.name;
            }
        });
        var sddc = new sdd();
        logs(sddc.getName()); //bb

        //匿名函数的高级应用
        var mapped = [10, 2, 3].map(function (x) {
            return x * 2
        });
        logs(mapped);  //20,4,6

        [
            {id:"item1"},
            {id:"item2"},
            {id:"item3"}
        ].map(function (current) {
                    logs(current.id);   //     item1     item2      item3
                });

        // 柯里化
        //柯里化就是预先将函数的某些参数传入,得到
        //一个简单的函数,但是预先传入的参数被保存在闭包中,因此会有一些奇特的特性。
        var adder = function (num) {
            return function (y) {
                return num + y;
            }
        }
        var inc = adder(1);   //inc/dec 两个变量事实上是两个新的函数,可以通过括号来调用
        var dec = adder(-1);
        logs(inc(99));// 100   ++1   logs(adder(1)(99));
        logs(dec(99));//98     --1   logs(adder(-1)(99));

        //eg...当请求从服务端返回后,我们需要更新一些特定的页面元素,也就是局部刷新的概
        //      念。使用柯里化,则可以很大程度上美化我们的代码,使之更容易维护
        function update(item) {
            return function (text) {
                $("div#" + item).html(text);
            }
        }
        //Ajax请求,当成功是调用参数callback
        function refresh(url, callback) {
            var params = {
                type:"echo",
                data:"dd"
            };

            $.ajax({
                type:"post",
                url:url,
                cache:false,
                async:true,
                dataType:"json",
                data:params,
                //当异步请求成功时调用
                success: function(data,status){
                    callback(data);
                },
                //当请求出现错误时调用
                error: function(err){
                    logs("error : "+err);
                }
            });
        }
        refresh("action.do?target=news", update("newsPanel"));
 
分享到:
评论
3 楼 sblig 2012-05-22  
<div id="newsPanel"> aa</div>
<div id="articlePanel"> bb</div>
<div id="picturePanel"> cc</div>
2 楼 sblig 2012-05-22  
refresh("action.do?target=news", update("newsPanel"));
refresh("action.do?target=articles", update("articlePanel"));
refresh("action.do?target=pictures", update("picturePanel"));
//其中,update 函数即为柯里化的一个实例,它会返回一个函数,即:
update("newsPanel") = function(text){
$("div#newsPanel").html(text);
}
/*由于 update(“newsPanel”)的返回值为一个函数,需要的参数为一个字符串,因此在
refresh 的 Ajax 调用中,当 success 时,会给 callback 传入服务器端返回的数据信息,
从而实现 newsPanel 面板的刷新,其他的文章面板 articlePanel,图片面板 picturePanel
的刷新均采取这种方式,这样,代码的可读性,可维护性均得到了提高。*/
1 楼 sblig 2012-05-22  
<script type="text/javascript" src="js/Base.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>

相关推荐

    JavaScript学习笔记_js常用函数封装_js包.zip

    JavaScript学习笔记_js常用函数封装_js包 gulp scss 模块化开发 github常用命令

    前端学习(四)——javascript学习笔记(二)函数

    前端学习——javascript学习笔记(二)函数

    javascript学习笔记.docx

    2) 一个应用程序出现的每个窗口或框架都对应一个Window对象,而且都为客户端JavaScript代码定义了一个唯一的执行环境。 3) 脚本执行过程是Web浏览器的HTML解析过程的一部分。脚本按照它们的出现顺序执行。 4) 简单的...

    javascript学习笔记发放2

    javascript学习笔记发放2。这章我们 继续.然后了解下js中操作数据 和 函数的 作用域。

    JavaScript学习笔记之函数记忆

    主要介绍了JavaScript学习笔记之函数记忆,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    JavaScript学习笔记讲解

    目 录 第 1 章 JAVASCRIPT的语法 1 ...1.6 JS中的系统函数(它们都属于GLOBAL对象的方法,可以直接使用) 9 1.6.1 parseInt(numString,[radix])方法 9 1.6.2 parseFloat方法 9 1.6.3 isNaN方法 9 1

    javascript学习笔记之函数定义

     * 分号是用来分隔可执行JavaScript语句,由于函数声明不是一个可执行语句,所以不以分号结束。 函数表达式 var x = function( 参数 ){  ...执行的代码块 }; 函数表达式定义的函数,实际上也是一个匿名函数(这...

    Javascript学习笔记之函数篇(五) : 构造函数

    Javascript 中的构造函数与其他语言相比也是不同的。任何通过关键字 new 调用的函数都可以当做构造函数。 在构造函数体内,this 指向新创建的对象。如果构造函数体内没有显示的 return 表达式,那么我们就默认返回 ...

    JavaScript 笔记

    JavaScript 学习笔记 包括常的函数收藏,希望对你有用

    JavaScript高级资料JavaScript代码 素材 笔记 作业资料.zip

    JavaScript高级资料JavaScript代码 素材 笔记 作业资料,学习资料 01-创建类和对象.html 02-类中添加方法(1).html 03-类的继承(1).html 04-super关键字调用父类普通函数(1).html 05-子类继承父类方法同时扩展自己...

    Javascript学习笔记2 函数

    在Javascript中,function才是Javascript的第一型。当我们写下一段函数时,其实不过是建立了一个function类型的实体。

    Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式

    函数声明 function foo() {} 函数 foo 将会在整个程序执行前被 hoist (提升),因此它在定义 foo 函数的整个 scope (作用域)中都是可用的。即使在函数定义之前调用它也没问题。 foo(); // Works because foo was ...

    JavaScript学习笔记之惰性函数示例详解

    函数是js世界的一等公民,js的动态性、易变性在函数的应用上,体现的淋漓尽致。下面这篇文章主要给大家介绍了关于JavaScript学习笔记之惰性函数的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。

    javascript学习笔记

    js 常用函数,html标签对象操作。dom对象结构理解

    JavaScript学习笔记(三):JavaScript也有入口Main函数

    在C和Java中,都有一个程序的入口函数或方法,即main函数或main方法。而在JavaScript中,程序是从JS源文件的头部开始运行的。但是某种意义上,我们仍然可以虚构出一个main函数来作为程序的起点,这样一来不仅可以跟...

    Javascript学习笔记.docx

    javascript 1 基本语法 1 动态函数 2 封装一个数组类 2 函数使用时注意事项 2 with语句 4 for,in 4 DOM 5 window 6 table 9 input 16 select 17 form 19 Ajax 22 接收文本数据 22 接收xml数据 23 ...

    Javascript学习笔记之函数篇(四):arguments 对象

    JavaScript中arguments函数对象是该对象代表正在执行的函数和调用它的函数的参数。JavaScript 函数中 arguments 为特殊对象,无需明确指出参数名,就能访问它们。

Global site tag (gtag.js) - Google Analytics