`
blue2048
  • 浏览: 183094 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jquery中匿名函数和闭包的使用

阅读更多
在学习使用jquery时,发现jquery的源码中使用了匿名函数

(function( window, undefined ) {
   var jQuery = function( selector, context ) {
   ....
   [color=red]window.jQuery = window.$ = jQuery;[/color]

})(window);


起初并不明白,这里使用匿名函数的作用,经过查阅大量博客资料后,发现jquery这里对javascript匿名函数和闭包的绝妙使用。

首先,这段函数使用了javascript立即运行的匿名函数语法,下面这段代码会立即执行
      function(x){alert(x)}(5);

其次,这段函数使用了闭包,在匿名函数内部定义了jquery变量,而这个jquery变量的作用域是这个匿名函数,即,外部函数或者对象中仍然可以使用jquery作为变量名,(除了window全局对象中,因为jquery这段代码的最后将jQuery对象挂在了window下)即匿名函数的使用,达到了隔离变量作用域的作用。

有些朋友会说,在外部,我一样可以使用jquery变量,$等,也调用这段代码中定义的jqery函数库,请看代码中,标红的部分,jquery已经将这个对象挂在window全局对象上。

所以,我们在使用javascript进行面向对象的编程中,可以学习jquery的风格

//挂在window对象的命名空间
my = my||{};
my.class = my.class||{};
(function($){
//定义一些局部变量,这些属性的作用域局限在匿名函数的范围,方便在对象的定义中使用
 var a = new Date();
 ...
//定义对象
 my.class.Test = function(){

};
//定义对象的属性和方法
my.class.Test.protortype={
   b:null,
   ...
   func:function(){
},
   ...
}

})(jquery)

以上是本人学习javascript中的一些心得,有不对的地方请大家指教

分享到:
评论

相关推荐

    (转载)JavaScript中匿名函数,函数直接量和闭包.docx

    许多JavaScript框架,如jQuery、React等,都广泛使用匿名函数和闭包来封装逻辑,保持代码的模块化和私有性。 总结来说,JavaScript中的匿名函数、函数直接量和闭包是实现高效、可维护代码的关键工具。理解并熟练...

    深入研究JavaScript的匿名函数.doc

    在jQuery中,经常可以看到匿名函数的使用,尤其是在初始化代码或插件中,通过IIFE来封装代码,确保私有变量和方法不会泄露到全局作用域。例如: ```javascript (function($){ // 具体的jQuery代码 })(jQuery); ```...

    jquery与js函数冲突的两种解决方法.docx

    另一种解决冲突的方式是使用IIFE(Immediately Invoked Function Expression),通过一个匿名函数来封装jQuery代码,并将`$`作为参数传入。这样,即使在全局作用域中`$`已经被其他库占用,函数内部的`$`依然可以代表...

    jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】

    本篇文章将深入探讨jQuery中的三种主要函数类型:函数声明、函数表达式以及匿名函数,并通过实例解析它们的使用技巧。 首先,我们来看**函数声明**。函数声明是通过`function`关键字定义一个具有名称的函数。这种...

    javascript,jquery闭包概念分析

    这是一个自我执行的匿名函数,它接收`jQuery`作为参数,并在自己的作用域内使用它。这样做的好处是避免了全局变量污染,同时确保了函数内部对`jQuery`的引用。这种写法实际上等同于: ```javascript function ...

    jQuery命名空间与闭包用法示例

    这个匿名函数立即执行,并且接收jQuery库作为参数,这样在函数内部就可以直接使用`$`符号。闭包在这里的主要作用是隔离内部变量,例如`keywords_pagenumber`和`companyList`,防止它们污染全局作用域。 在闭包中...

    jQuery源码+中文详细注解

    文档中的第71行至73行提到,在当前作用域内(即这个自运行的匿名函数所形成的闭包内)、全局作用域内的`jQuery`和`$`都是指向下面这个函数的引用,而这个函数实际上调用了`jQuery.fn.init`来构造一个jQuery对象。...

    详解闭包解决jQuery中AJAX的外部变量问题

    虽然上述代码使用了闭包来解决问题,但通常我们不推荐在回调函数中使用闭包来解决问题。更好的实践方法是使用数组或其他数据结构来管理回调函数,例如利用jQuery的Deferred对象和Promise,或者使用ES6的async/await...

    jQuery源码解读

    整个jQuery库被包裹在一个立即执行的匿名函数中,这样可以确保其中定义的所有函数和对象只在这个作用域内可见,起到了类似命名空间的效果。同时,jQuery将其自身和$符号绑定到window对象,使得用户可以在全局范围内...

    JavaScript 编写匿名函数的几种方法

    匿名函数在JavaScript编程中非常重要,因为它们能够帮助开发者控制变量的作用域,构建闭包(Closure),以及避免污染全局作用域。接下来我们将详细介绍在JavaScript中实现匿名函数的几种主要方法。 首先,一种错误...

    jquery与js函数冲突的两种解决方法

    以上两种方法都可以有效解决在多JavaScript库环境中使用jQuery时出现的$()函数冲突问题,开发者可以根据实际情况选择适合的解决方式。需要特别注意的是,在多库环境中,最好不要使用$()作为参数传递,而应该使用完整...

    JQuery源码详细中文注释!

    JQuery源码以一个自执行匿名函数的形式存在,这意味着该函数定义完成之后就会立即执行。这样的方式可以创建一个闭包,从而保护JQuery的代码不与外部环境发生变量名等冲突。同时,自执行函数确保了JQuery库能够在页面...

    理解和使用 JavaScript 中的回调函数

    ### 理解和使用 JavaScript 中的回调函数 在 JavaScript 中,回调函数是一种常见的功能编程技术,被广泛应用于各种场景之中。本文旨在深入探讨回调函数的概念、工作原理以及如何在实际开发中应用它们。 #### 一、...

    jQuery AJAX回调函数this指向问题

    通过定义一个自执行的匿名函数,并在这个匿名函数内部定义回调函数,可以使用外部函数的局部变量(即this指向的对象)作为回调函数的上下文。 文章最后演示了如何利用这些方法来解决在jQuery AJAX回调中this指向...

    javascript 匿名函数的理解(透彻版)

    代码如下: (function(){ //这里忽略jQuery所有实现 })();...当一个匿名函数被括起来,然后再在后面加一个括号,这个匿名函数就能立即运行起来!真神奇哦! 嘿嘿!胡闹到此为止。在这一节,我们碰到

    jQuery基于闭包实现的显示与隐藏div功能示例

    闭包中的匿名函数通过`i%2==0`来判断当前的`i`值是否为偶数,从而决定隐藏或显示紧跟在按钮后面的子div。如果`i`为偶数,`slideDown()`方法会展示子div;如果`i`为奇数,`slideUp()`方法则会隐藏子div。每次点击后,...

    js和Jquery参考手册.zip

    同时,掌握控制流(条件语句、循环)和函数(声明式、匿名、箭头函数)也是必不可少的。此外,深入学习原型链、对象继承和模块化开发(CommonJS、ES6模块)将有助于提升你的编程能力。 在使用jQuery时,熟悉选择器...

    jQuery使用经验小技巧(推荐)

    将jQuery插件的代码放在立即执行的匿名函数(IIFE)中,如 `(function($) { ... })(jQuery)`,这可以避免全局命名空间污染,确保代码的隔离性。但需要注意,如果需要外部调用插件内的方法,需要将它们暴露在jQuery....

    jquery源码_详细中文注释.pdf

    文档从第45行开始正式进入jQuery源码分析部分,首先可以看到的是一个自执行匿名函数: ```javascript (function(){ // jQuery code runs here })(); ``` 这一段代码的作用在于创建了一个闭包环境,用来保护jQuery...

Global site tag (gtag.js) - Google Analytics