`

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学习笔记 精华版

    本资源为个人Javascript学习笔记的精华版,涵盖了Javascript的基础知识、事件处理、对象和系统函数、浏览器对象等方面的内容。下面是对每个知识点的详细说明: 1. 什么是JavaScript? JavaScript是一种脚本语言,...

    JavaScript学习笔记,javascript基础知识,基础语法整理.pdf

    该资源涵盖了JavaScript的基础知识点,包括基本概念、函数、对象、时间对象、文字对象、图片应用和表单应用等内容。这些建议知识点可以帮助开发者快速掌握JavaScript的基础知识,提高开发效率和质量。

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

    本压缩包“JavaScript学习笔记_js常用函数封装_js包.zip”包含了对JavaScript基础及进阶技巧的学习资料,特别关注了函数封装和模块化开发实践。 首先,`tool.js`可能是一个实用工具函数集合,封装了一些常见的...

    JavaScript学习笔记

    本学习笔记旨在帮助初学者快速掌握JavaScript的核心概念和技术,实现从入门到精通的过渡。 1. **基础语法** - 变量声明:JavaScript支持var、let和const关键字声明变量,理解它们的作用域和提升特性至关重要。 - ...

    javascript学习笔记整理知识点整理

    这份“javascript学习笔记整理知识点整理”是针对初学者的一份宝贵资料,涵盖了JavaScript的基础知识,旨在帮助新手快速入门并掌握这门语言的核心概念。 一、变量与数据类型 在JavaScript中,变量用于存储数据。...

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

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

    JavaScript-学习笔记.pdf

    以上是JavaScript学习笔记中提到的一些核心知识点,通过对这些知识点的理解和熟练应用,可以为进一步学习和掌握JavaScript打下坚实的基础。在实际开发过程中,结合具体的项目需求,这些知识会得到更深入的拓展和应用...

    javascript入门学习笔记

    这份"javascript入门学习笔记"旨在为初学者提供一个全面且深入的JavaScript学习路径。 一、基础语法 JavaScript的基础包括变量、数据类型、操作符、流程控制等。变量用于存储数据,数据类型分为基本类型(如字符串...

    js 笔记 javascript 学习笔记

    本学习笔记将深入探讨JavaScript的核心概念,包括变量、数据类型、操作符、控制流程、函数、对象、数组、原型链、闭包等,并结合实际示例,如my.js、order.js、login.js等文件,来讲解其在实际项目中的应用。...

    javascript学习笔记.docx

    这篇学习笔记主要涵盖了JavaScript的基础语法和客户端JavaScript的相关知识。 1. **JavaScript基本语法**: - **变量声明**:未声明的变量尝试读取时会产生错误,而写入未声明的变量会创建一个全局变量。 - **...

    javascript学习笔记

    以上是对给定文件中JavaScript学习笔记的部分内容进行的详细解读,涵盖了JavaScript的基础知识、语法、数据类型、函数、对象、数组、DOM编程、AJAX以及JSON和jQuery的简介,旨在为初学者提供全面的入门指南。

    javascript学习笔记讲解版参考.pdf

    JavaScript学习笔记讲解版参考.pdf是一份详尽的教程,涵盖了从基础到进阶的JavaScript知识。这份笔记首先从CSS样式表开始,引导读者理解网页样式的设置与应用。 1. CSS(Cascading Style Sheets)样式表是用于控制...

    JavaScript高级程序设计2,学习笔记---第一篇

    这篇学习笔记将带你探索JavaScript的核心概念,包括变量、数据类型、控制流、函数、对象和类等,这些都是构建复杂应用程序的基础。 首先,我们要了解JavaScript的基础语法。在JavaScript中,变量是存储数据的容器,...

    javascript高级编程(学习笔记 包括 1 , 2 版)

    JavaScript 高级编程的学习笔记涵盖了ECMAScript中的基础概念,特别是关于变量、数据类型和运算符的使用。在ECMAScript中,变量可以存储两种基本类型的值:原始值(Primitive Values)和引用值(Reference Values)...

    javaScript学习笔记.rar

    这个“javaScript学习笔记.rar”压缩包显然包含了作者在学习JavaScript过程中的心得和记录,对于初学者或者想要深入理解JavaScript的人来说,是一份宝贵的资源。 JavaScript与Java虽然名字相似,但两者实际上是不同...

Global site tag (gtag.js) - Google Analytics