jQuery和js自定义函数和文件的方法(全网最全)

 
 版权声明:本文为像雾像雨又像风_http://blog.csdn.net/topdandan的原创文章,未经允许不得转载。 https://blog.csdn.net/Topdandan/article/details/81484731

我们在编写jQuery或者js的时候常常要自定义函数,并且写入一个js文件中,方便引入html中调用。那么就涉及到如何在js文件中书写jQuery和js自定义函数的问题了。

在介绍自定义函数之前必须先来了解下js的自执行函数。

一、js自执行函数介绍

我们通常将JS代码写在一个单独的JS文件中,然后在页面中引入该文件。但是,有时候引入后会碰到变量名或函数名与其它JS代码冲突的问题。那么如何解决这个问题呢?作用域隔离。在JS中,作用域是通过函数来划分的,将JS代码封装到函数中进行调用可以避免变量名/函数名冲突的问题,但是这也并不是万无一失,因为封装函数本身有可能和其它函数重名,解决方案:自执行函数。

自执行函数是用一对圆括号将匿名函数包起来,加括号(传参)会立即执行。因为函数无名字,实现了作用域的绝对隔离和函数名的冲突问题。创建这个自执行函数,就相当于开辟了一个新的命名空间,使里面的内容与其他空间隔离,这样就减少了js文件中的全局变量与其他全局变量名称相同的风险。

自执行函数的几种表现方式:

方式1:function外面加括号 (推荐,比较常见):

  1.  
    //不带参数的自执行(匿名)函数
  2.  
    (function() {
  3.  
    alert(x + y);
  4.  
    })();
  5.  
     
  6.  
    //带参数的自执行(匿名)函数
  7.  
    (function(x, y) {
  8.  
    alert(x + y);
  9.  
    })(2, 3);

上面创建了一个匿名函数(在第一个括号内),第二个括号用于调用该匿名函数,并传入参数。两个括号都是表达式,是表达式就有返回值,所以可以在后面加一对括号让它们执行.当js的解析器执行到前一个括号后就返回一个函数对象然后连着后面一个括号就构成了一个完整的函数名+(参数)+;的函数执行语句。

方式2:最前最后加括号 (这是jslint推荐的写法,好处是,能提醒阅读代码的人,这段代码是一个整体)

  1.  
    (function() {
  2.  
    alert(1);
  3.  
    }());

方式3:function前面加运算符,常见的是!与void 。这样做的目的就是将函数转换成表达式。

  1.  
    !function() {
  2.  
    alert(1);
  3.  
    }();
  4.  
     
  5.  
    void function() {
  6.  
    alert(2);
  7.  
    }();

二、js文件的自定义函数

上面介绍了自执行函数,所以我们可以用它来减少全局变量的使用,提高安全性。所以在js文件中,我们常常用自执行函数来包裹住我们的自定义函数。格式如下:

  1.  
    //自执行匿名函数
  2.  
    (function($){
  3.  
    //自定义函数的代码
  4.  
    })(jQuery);

那么自定义函数如何来定义呢,请看下面的方法

方法一:通过在jQuery全局变量中增加函数

  1.  
    //创建:通过在jQuery全局变量中增加函数
  2.  
    (function($){
  3.  
    //在jQuery这个全局变量对象中增加一个叫myFunction1的函数,函数参数根据需要自定
  4.  
    $.myFunction1=function(x,y){
  5.  
    //函数体
  6.  
    };
  7.  
    $.fn.myFunction2=function(x,y){
  8.  
    //函数体
  9.  
    };
  10.  
    })(jQuery);
  11.  
    //执行
  12.  
    $(function(){
  13.  
    $.myFunction1(1,2);
  14.  
    });

方法二:通过在jQuery全局变量中扩展程序

  1.  
    //创建两个函数
  2.  
    (function($){
  3.  
    //创建方法3
  4.  
    jQuery.extend({
  5.  
    "myFunction3":function(){
  6.  
    alert("我的自定义jquery方法3");
  7.  
    };
  8.  
    });
  9.  
    //创建方法4
  10.  
    jQuery.fn.extend({
  11.  
    "myFunction4":function(){
  12.  
    alert("我的自定义jquery方法4");
  13.  
    }
  14.  
    });
  15.  
    })(jQuery);
  16.  
    //执行
  17.  
    $(function(){
  18.  
    //执行方法3
  19.  
    $.myFunction3();
  20.  
    //执行方法4
  21.  
    //注意,在执行方法4的时候,必须要对象来调用,比如通过标签选择器$("button").myMethod(args);
  22.  
    $("对象").myFunction4();
  23.  
    });

注意:通过.fn定义的扩展方法,需要通过jQuery选择器调用,比如通过标签选择器$("button").myMethod(args)。

方法三:创建全局变量,在全局变量里面自定义函数

  1.  
    //在js文件中创建一个全局变量STUDENT,在对象里面自定义一个获得姓名和年龄的方法
  2.  
    var STUDENT={ //或者window.STUDENT,表示是该窗口的全局变量
  3.  
    name:"大哥",
  4.  
    age:"38",
  5.  
    //自定义函数
  6.  
    getNameAndAge:function(){
  7.  
    return "name:"+name,"age:"+age;
  8.  
    }
  9.  
    }
  10.  
    //执行,获取STUDENT对象中的信息
  11.  
    $(function(){
  12.  
    //获取学生的信息
  13.  
    var info=STUDENT.getNameAndAge();
  14.  
    });

转载 jQuery和js自定义函数和文件的方法(全网最全)的更多相关文章

  1. web前端对上传的文件进行类型大小判断的js自定义函数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. jquery.validate.js默认配置,jquery.validate.js自定义提示信息

    jquery.validate.js默认配置,jquery.validate.js自定义提示信息 配置jQuery.validator默认的处理方法 >>>>>>& ...

  3. 关于jquery.unobtrusive-ajax.js 回调函数无效 的解决办法

    今天新项目的时候写MVC的时候使用到了Ajax.BeginForm,发现它的回调函数怎么都不响应,最后在网上查找了相关资料跟自己写的一些代码测试, 总算找到了原因:jquery.unobtrusive ...

  4. PHP使用feof()函数读文件的方法

    这篇文章主要介绍了PHP使用feof()函数读文件的方法,以实例形式对比了正确与错误的用法,阐明了feof()函数的使用技巧,需要的朋友可以参考下 本文实例讲述了PHP使用feof()函数读文件的方法 ...

  5. php不使用copy()函数复制文件的方法

    本文实例讲述了php不使用copy()函数复制文件的方法.分享给大家供大家参考.具体如下:下面的代码不使用php内置的copy函数,直接通过文件读取写入的操作方式复制文件 <?php funct ...

  6. jquery.form.js用法之清空form的方法

    本段代码摘取自jquery.form.js中,由于觉得该方法的使用性非常强,同时也可独立拿出来使用.该段代码言简意赅可以很好的作为学习参考. /** * Clears the form data. T ...

  7. jquery.form.js ie 下下载文件已经ie8失效问题解决方案

    https://github.com/malsup/form/blob/master/jquery.form.js在使用这个插件时遇到的问题1.ie下会变成下载文件,解决方案是在后端返回时设置'Con ...

  8. 关于JQuery.form.js异步上传文件点滴

    好久没动代码了,前几天朋友委托我帮忙给做几个页面,其中有个注册带图片上传的页面.已之前的经验应该很快就能搞定,没想到的是搞了前后近一天时间.下面就说说异步上传的重要几个点,希望自己下次遇到此类问题的时 ...

  9. 在js自定义函数中使用$(event.target)代替$(this)

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. 使用 Immutable Subject 来驱动 Angular 应用

    现状 最近在重构手上的一个 Angular 项目,之前是用的自己写的一个仿 Elm 架构的库来进行的状态管理,期间遇到了这些痛点: 样板代码太多 异步处理太过繁琐 需要单独维护一个 npm 包 其中, ...

  2. Java坦克大战(一)

    接下来的几篇博客,想记录一下通过学习坦克大战项目来循序渐进的学习Java基础.主要是为了巩固基础知识,当然学习编程重要的还是多敲,问题通常是在敲代码的过程中发现的,积累也是在敲代码中寻求的经验.这个坦 ...

  3. Java基础——Oracle(二)

    一.Oracle 中的几个服务 1.OracleDBConsoleorcl 进程:nmesrvc.exe oem控制台服务进程,dba用.Oracle Enterprise Manager(Oracl ...

  4. spline和Pchips的不同(matlab)

    这是一条官方的链接:http://blogs.mathworks.com/cleve/2012/07/16/splines-and-pchips/ 主要是比较在matlab中spline和Pchips ...

  5. 递归函数获得n个不重复的随机数

    // 递归函数获取不重复的随机数 var arr_end; // 用于保存最后得到的数组 function suiji(n) { var arr = [] // 产生n个随机数加入数组 for(var ...

  6. sessionStorage记录返回前端的数据,用于解决登录拦截器刷新页面的问题

    1.问题出现的场景与解决 实现一个登录拦截器,重写doFilter方法,判断用户的登录状态,在用户长时间未操作或者异地登录时前端进行提示,完整代码如下 public class LoginValida ...

  7. 浅析requests库响应对象的text和content属性

    在做爬虫时请求网页的requests库是必不可少的,我们常常会用到 res = resquests.get(url) 方法,在获取网页的html代码时常常使用res的text属性: html = re ...

  8. JS中使用document.defaultView.getComputedStyle()、currentStyle()方法获取CSS属性值

    在对网页进行调试的过程中,经常会用到js来获取元素的CSS样式,方法有很多很多,现在仅把我经常用的方法总结如: 1. obj.style:这个方法只能JS只能获取写在html标签中的写在style属性 ...

  9. BZOJ4259: 残缺的字符串(FFT 字符串匹配)

    题意 题目链接 Sol 知道FFT能做字符串匹配的话这就是个裸题了吧.. 考虑把B翻转过来,如果\(\sum_{k = 0}^M (B_{i - k} - A_k)^2 * B_{i-k}*A_k = ...

  10. 2018-02-18 Antlr4实现简单语言之条件语句

    本系列之前的文章: Antlr4的分析错误处理 Antlr4实现数学四则运算 Antlr4添加中文变量赋求值,括号,各种问题 Antlr4: 修改语法规则更接近普通BNF格式 Antlr4实现简单语言 ...