zoukankan      html  css  js  c++  java
  • 三种定义JavaScript函数方法以及使用匿名函数打造自己的类库

    一、什么是匿名函数?

    在Javascript定义一个函数一般有如下三种方式

    使用函数语句来定义,语法如下:

    function myfunc(arg_1,arg_2,...,arg_n){
        // 执行一些语句
    }

    使用函数表达式来定义,语法如下:

    var myfunc=function(arg_1,arg_2,...,arg_n){
        // 执行一些语句
    }

    使用Function类来定义,语法如下:

    var myfunc=new Function([arg_1,arg_2,...,arg_n],functionBody);

    上面三种定义方法中,第1种就是最常用的方法,后两种都是把一个函数赋值给了一个变量myfunc,而这个函数是没有名字的,即匿名函数。


    二、匿名自执行函数

    有一种匿名函数定义可以自动执行,这种函数的定义语法如下:

    (function(arg_1,arg_2,...,arg_n){
        // 执行一些语句
    })()

    例如:

    (function(a,b){
        alert(a+b);
    })(10,30)

    这段程序返回值是30,也就是两个数的和。

    这其实闭包的一种体现,可以利用这种方式来封装自己的函数和变量,从而避免来自多个开发者的多个函数相互冲突,这相当于定义了一个命名空间,来自不同的开发者能位于自己的命名空间。而且这种方式不会污染全局环境,因为外部无法饮用函数内部的变量,因此在执行完后很快就会释放。


    那么如何访问匿名自执行函数里的函数呢?

    通常是为函数定义个参数,改参数是一个对象,在里面的函数或变量前加上一个对该对象的饮用,这样该函数或变量就成为对象的方法或属性了。

    例如:

    var o=new Object();
    (function(obj){
        obj.alert=function(msg){
            alert('oseye.net : '+msg);
        }
    })(o)
    o.alert('test'); // 返回oseye.net : test

    最常用的对象是将全局对象window作为参数传进去,这样函数或变量就成为全局函数和变量了。很多库函数都是这样来定义的,jQuery整个库定义都位于匿名自执行函数中,并传递window作为参数:

    (function(window,undefined){
        //jQuery定义
    })()
    出处:http://www.zhaiqianfeng.com    
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    用document.onreadystatechange和document.readyState确保文档加载完毕才获取DOM
    动态修改样式和层叠样式表
    jQuery中Ajax事件顺序及各参数含义
    对于JavaScript对象的prototype和__proto__的理解
    HTML5实现“摇一摇”效果
    修改mysql错误提示语言的方法
    12个非常有用的JavaScript小技巧
    学习javascript中this用法的一些感悟
    Token 认证
    “好”的接口是怎么样的?
  • 原文地址:https://www.cnblogs.com/zhaiqianfeng/p/4616969.html
Copyright © 2011-2022 走看看