`
eleven_huali
  • 浏览: 1556 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

$.extend()方法和(function($){...})(jQuery)详解

阅读更多
$.extend()方法和(function($){...})(jQuery)详解
前言:

  把年前遇到了一些关于JS和JQuery的一些问题给总结一下。主要是介绍JQuery的extend方法和(function($){})(jQuery),也会涉及一些相关的知识。

1.    JS中substring与substr的区别

之前在项目中用到substring方法,因为C#中也有字符串的截取方法Substring方法,当时也没有多想就误以为这两种方法的使用时一样的。这样就直接按照在C#中使用Substring的方式,直接在js中用了substring,在实际的项目中,有时候能得到正确的结果,但是有时候得到的结果却让人匪夷所思,后来仔细的调试跟踪之后才发现,原来是Js中substring的方法跟C#中的Substring方法不一样。关于C# 中的字符串截取方法已经很简单了,这里就不再叙述了。主要讲一个js中的substring方法,顺便再讲一下substr方法。

Substring:

该方法可以有一个参数也可以有两个参数。

l  一个参数:

示例: var str=“Olive”;

               str.substring(3);

        结果:“ve”

        说明:当substring只有一个参数时,参数表示从字符串的第几位开始截取,

直截取到字符串结尾。

l  两个参数:

        示例:var str=“Olive”;

1)       Str.substring(3,4);

2)       Str.substring(3,2);

           结果:1) “v”  2) 0

           说明:当substring有两个参数时,第一个参数表示从字符串的第几位开始截取,第二个参数表示截取到字符串的第几位。这点是个C#中字符截取不同的一点,所以才会导致不同的结果。

Substr:

该方法也可以有一个或两个参数。

l  一个参数:

    说明:substr一个参数时,作用跟substring方法一个参数时一样。

l  两个参数:

    示例:var str=“Olive”;

1)       Str.substr(3,2);

2)       Str.substr(3,4);

        结果:1) “ve” 2) “ve”

        说明:substr有两个参数时,第一个参数表示从字符串的第几位开始截取,第二个参数表示截取多少位字符串。这点跟C#中字符截取相同的,所以在以后的使用中,如果想要避免出现截取的问题最好还是使用substr。

2 $.extend()

因为项目中有些地方看到有用到这个方法,当时也不知道是什么意思,见的多了就想了

解一下。原来这个方法还是挺有用的,多用在编写插件,当然,它本身也有一些重载原型。

2.1 extend(result,item1,item2…..)

这里这个方法主要用来合并,将所有的参数项都合并result中,并返回result,但是这

样就会破坏result的结构。

2.2 extend({},item1,item2,……)

用这个方法,可以将所得的结果全部合并在{}中,并返回,而且还不会破坏原有的项的结构。

示例:

Var item={name:”olive”,age:23};

Var item1={name:”Momo”,sex:”gril”};

Var result=$.extend({},item,item1);

结果:

Result={name:”Momo”,age:23,sex:”gril”};

说明:

以上的结果表明extend方法将所有的项都合并到了{}中,但是,细心一点就会发现,其中item1中的name:“Momo” 将item中的name:“olive”给覆盖了,这是怎么回事?请接着往下看。

2.3 extend(bool,{},item1,item2….)

Extend方法还有带bool型参数的重载。

bool型参数为true表示深拷贝,为false时表示浅拷贝。具体可以通过一下示例来说明:

示例:

var item={name:“olive”,age:23,address{provice:”河南”,city:”郑州”}};

var item1={sex:”girl”,address{city:”北京”}};

var result=$.extend(true,item,item1);

var result1=$.extend(false,item,item1);

结果:

Result={name:“olive”,age:23,sex:”gril”,address:{provice:”河南”,city:”北京”}};

Result1={name:“olive”,age:23,sex:”gril”,address:{ city:”北京”}};

说明:

以上结果说明,当参数为ture时,即为深拷贝,当子项item1中的子项有与item中的子项相同属性的值不一样时,item1中子项的值会将item子项中的值给覆盖,当子项item1的属性跟item中的属性不同时,会与item进行合并。

当参数为false时,子项item1中的子项中与item中的子项属性相同时,item1中子项的属性值会将item中的值给完全覆盖。

2.4 $.extend(item)

该方法是将item合并到Jquery的全局对象中去,相当于为Jquery全局对象添加了一个

静态方法(对应这里的静态方法,当然还有实例方法,在后边有介绍)。

     示例:

           $.extend({SayHello:function(value){alert(“hello “+value);}});

           这样写过之后,就可以直接调用SayHello方法:

           $.SayHello(“Olive”);

     说明:该方法相当于为Jquery类添加了新的方法。

2.5 $.fn.extend(item)

上边提到的$.extend(item)说是为Jquery类添加了静态方法,那么这里的$.fn.extend(item

)就是为每一个实例添加一个实例方法了。

     示例:

         $.fn.extend({hello:function(value){alert(“hello “+value);}});

         这样写过之后,在获取每一个示例之后,都可以调用该方法:

         $(“#id”).hello(“Olive”);



3.(function($){….})(jQuery)

初次看到这种写法时,一头雾水,不知所云。在网上查找了一些资料之后才有点明白。

我们先看第一个括号里边的内容:function($){….},这不就是一个匿名的函数吗?但是它的形参比较奇怪,是$,这里主要是为了不与其它的库冲突。

这样我们就比较容易理解第一个括号内的内容就是定义了一个匿名函数,我们在调用函数的时候,都是函数名后边加上括号以及实参,但是由于操作符的优先级我们定义的匿名函数也需要用()括起来。

现在我想大家已经很清楚这句话是什么意思了吧。第一个括号表示定义了一个匿名函数,然后第二个函数表示为该函数传递的参数,整个结合起来意思就是,定义了一个匿名函数,然后又调用该函数,该函数的实参为jQuery。

相当于:function fun($){…};fun(jQuery);

这种方法多用于存放开发的插件,执行其中的代码时,Dom对象并不一定加载完毕。于此相反的是$(function(){}),这种方法在使用时页面的Dom对象已经加载完毕了。事实上该方法的全写是:$(document).ready(function(){});



好了,今天就总结到这里了,主要都是一些跟写插件相关的常用的方法,希望能给大家一些帮助。
分享到:
评论

相关推荐

    jQuery:jQuery.extend函数详解

    除了扩展静态方法之外,还可以使用`$.fn.extend`向每个jQuery实例对象中添加方法: ```javascript $.fn.extend({ hello: function () { alert('Hello!'); } }); ``` 现在,可以在任何jQuery对象上调用`hello`...

    jQuery.extend 函数详解

    上述代码将`hello`方法添加到了jQuery全局对象`$`中,可以通过`$.hello()`来调用它。 **2. 合并到jQuery实例对象** ```javascript $.fn.extend({ hello: function() { alert('Hello'); } }); ``` 这行代码将`...

    jQuery插件开发的两种方法及$.fn.extend的详解

    开发扩展其方法时使用$.extend方法,即jQuery.extend(object); 代码如下: $.extend({ add:function(a,b){return a+b;} , minus:function(a,b){return a-b;} }); 页面中调用: 代码如下: var i = $.add(3,2); var j ...

    jQuery.extend()、jQuery.fn.extend()扩展方法示例详解

    jQuery自定义了jQuery.extend()和jQuery.fn.extend()方法.其中jQuery.extend()方法能够创建全局函数或者选择器,而jQuery.fn.extend()方法能够创建jQuery对象方法. 例如: 代码如下: jQuery.extend({ showName : ...

    jQuery中的deferred对象和extend方法详解

    jQuery中的`deferred对象`和`extend方法`是JavaScript异步编程的重要工具,尤其在处理AJAX请求和其他异步操作时非常有用。`deferred对象`是jQuery 1.5.0版本引入的,它提供了一种更优雅的方式来管理回调函数,解决了...

    jQuery插件编写步骤详解

    除了扩展`$.fn`,jQuery还提供`$.extend`方法来扩展jQuery对象本身,添加静态方法。例如,我们可以添加`minValue`和`maxValue`方法: ```javascript $.extend({ minValue: function (a, b) { return a ; }, ...

    jQuery中extends详解[借鉴].pdf

    `jQuery.extend`还可以省略`dest`参数,此时源对象会被合并到jQuery全局对象(`$`)或jQuery实例对象(`$.fn`)中。例如: ```javascript $.extend({hello: function() { alert('hello'); }}); // 全局扩展 $.fn....

    jQuery中extend()和fn.extend()方法详解

    jQuery中的`extend()`和`fn.extend()`方法是用于合并对象属性和方法的工具,它们在扩展和定制jQuery功能时起着关键作用。 首先,`jQuery.extend()`方法允许开发者将一个或多个对象的属性和方法合并到一个现有对象上...

    jQuery.extend 函数及用法详细

    总结来说,`$.extend` 方法为 jQuery 功能的扩展提供了灵活而强大的工具,但开发者应当谨慎使用,以免产生难以预料的副作用。通过合理利用 `$.extend`,可以创建出既实用又易于维护的 jQuery 插件。

    jQuery1-8-2.js和jqueryAPI

    - **$.fn.extend()**:扩展jQuery对象的方法。 - **$.each()**:遍历对象或数组,执行回调函数。 - **$.ajaxSetup()**:设置全局Ajax选项。 - **$.getScript()**:异步加载并执行JavaScript脚本。 - **$.getJSON()**...

    jQuery中extend函数详解

    做法是将一个新的空对象({})做为$.extend的第一个参数,defaults和用户传递的参数对象紧随其后,这样做的好处是所有值被合并到这个空对象上,保护了插件里面的默认值。 $.fn.myPlugin = function(options) { var...

    详解jQuery插件开发方式

    2. **扩展jQuery**:在私有域内,通过`$.fn.extend`方法将插件方法添加到jQuery对象的原型链上,使其能够被jQuery选择器调用。 3. **设置默认值**:在插件方法内部,可以定义一个`defaults`对象存储默认配置,然后...

    jquery插件开发

    这里`$.fn`是jQuery对象的prototype,等同于`$.prototype`,因此在`$.fn`上定义的方法可以被所有jQuery选择器调用。 ### 2. 参数传递与选项配置 `options`参数允许我们为插件提供可配置的选项。开发者可以通过在...

    jquery插件编写指南

    - **实现**:利用 jQuery 内置的 `$.extend` 方法,一次性添加多个函数。 - **示例**:添加两个函数 `sayHello` 和 `sayBye`。 ```javascript (function($) { $.extend({ sayHello: function() { alert('...

    详解jQuery插件开发中的extend方法

    在jQuery插件开发中,`extend`方法是一个非常关键的工具,用于合并多个对象的属性和方法。这个方法允许开发者将自定义的功能扩展到jQuery核心或jQuery对象的实例上,从而实现插件功能的定制。 首先,让我们深入理解...

Global site tag (gtag.js) - Google Analytics