$.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(){});

 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

积米浏览器如何清除浏览数据

相信大家都知道,大多数浏览器都会自动缓存浏览数据,而缓存的数据多了也就会直接影响到网页的浏览速度,所以最好是能够经常或者定期去清除浏览数据。那么,如何清除浏览数据呢?下面,以积米浏览器为例,我们一…

Java文件保存与删除工具类

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream;/*** * author ahomeeye* * 2012-7-26 下午3:50:50 文件操作工具类*/ public class FileUtil {// 保存文件public static void saveFile(String newsRootPath, String filename…

win7在网上邻居上看不到别的电脑如何解决

近期在网上看到很多用户询问说win7纯净版系统在网上邻居上看不到别的电脑是什么情况呢?一般情况下,我们可以通过网上邻居和别的电脑共享文件、图片、视频等等。可是有时候Win7系统在网上邻居上看不到别的电脑,也无法搜索到。有什么办法能解决此故障问题…

循环删除List集合的错误

症状:不是郝柱也能看到灾备分析:调试发现动作中有两个灾备,不过只过滤了其中一个 错误所在:代码如下,这里for循环删除List逻辑出问题了,犯了一个比较基础的错误 : 两个灾备动作索引是相邻的,当我remove掉第一个时紧跟着的动作就会取代它原来的位置,最终导致问题发生 修改方案:解…

win10使用网络共享功能的方法

win10系统有一个网络共享功能,可以实现局域网之间文件和打印机的共享操作,从而有效提高资源共享,实现更高效的办公需求。好多新手用户不知道网络共享功能怎么使用?为此,本文教程来和大家详细说明一些使用方法。 具体方法如下: …

JSON转List

JSON转List在平时的开发中经常遇到,这里介绍两张方法: 1.使用jackson(推荐,支持嵌套复杂结构): ObjectMapper mapper new ObjectMapper(); JavaType javaType mapper.getTypeFactory().constructPara…

双击ie浏览器没反应打不开的解决方法

双击ie浏览器后没反应怎么办?双击ie浏览器打不开怎么解决?ie浏览器是众多网民朋友比较熟悉的网页浏览器之一,但是不少用户经常会遇到双击ie浏览器没反应或者双击ie浏览器打不开的尴尬情况,这个问题要如何解决呢?为此小编特整理下文,以下解…

ajax中return取不到值的问题

症状:机器迁移时判断JS返回取不到值分析 :调试发现data是有值的,而且下断点调试发现这段ajax还没走完,后面的逻辑已经开始走了错误所在:ajax之所以叫ajax它首先是异步的,顺序执行的程序不需要等待ajax跑完才继续执行 修改方案:将默认为true的…

UC浏览器如何调节手机屏幕亮度

uc浏览器是一个非常好用的社交服务软件,用户可以使用手机随时进行线上搜索,这款软件使用超级的方便,用户在线上阅读的时候,有很多功能可以使用,在进行线上阅读的时候,可以对页面的文字,背景&…

linux的nohup命令的用法

在应用Unix/Linux时,我们一般想让某个程序在后台运行,于是我们将常会用 & 在程序结尾来让程序自动运行。比如我们要运行mysql在后台: /usr/local/mysql/bin/mysqld_safe –usermysql &。可是有很多程序并不想mysqld一样,这…

谷歌浏览器如何添加信任网址 Chrome浏览器信任网址添加方法分享

和许多国产浏览器产品一样,谷歌旗下的Chrome浏览器中也可以将部分站点设置为信任网址,以便避免权限获取提示的“骚扰”。那么,谷歌浏览器要如何添加信任网址?不清楚具体操作的朋友,可以看看小编分享的Chrome浏览器信任网址添加方…

Websocket判断逻辑Bug

症状:灾备后台失败但前台提示成功分析 :下断点发现此时前端的data.obj为undifined,后台pyhon脚本执行报错了 错误所在:前台判断不应该加上undifined 修改方案:第一次修改如上,判断严谨多了,但是运行是前台报不能对undefined使用length分析 :…

QQ浏览器的历史记录在那 QQ浏览器查看浏览历史的方法

QQ浏览器是不少用户选择安装的一款实用性不错的浏览器,在使用这款浏览器的时候有不少功能注意不到,如QQ浏览器怎么查找历史记录等等,下面小编就带大家查看QQ浏览器的历史记录的步骤,帮助大家找回意外关闭或者未加保存到书签的网站…

SpringMVC深度探险 —— SpringMVC核心配置文件详解

在上一篇文章中,我们从DispatcherServlet谈起,最终为读者详细分析了SpringMVC的初始化主线的全部过程。整个初始化主线的研究,其实始终围绕着DispatcherServlet、WebApplicationContext和组件这三大元素之间的关系展开。 在文章写完之后&…

win7更改用户登录或注销方式的操作教程

我们可以通过更改用户登录或注销方式的办法保护我们的电脑不被其他人登录使用,如果有其他人要登录使用我们的电脑就会出现类似下图的提示,下面就一起来看一下win7更改用户登录或注销方式的操作教程吧。 win7更改用户登录或注销方式的操作教程 1、首先使…

Java下载文件的几种方式

public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载的文件的路径。File file new File(path);// 取得文件名。String filename file.getName();// 取得文件的后缀名。String ext filename.substring(filename.lastIn…

傲游浏览器如何设置缓存文件位置 浏览器缓存文件位置设置方法

鉴于许多浏览器产品都将缓存文件保存在了C盘,不少用户都会对其进行修改,毕竟C盘的文件过多也不是什么好事。那么,浏览器缓存文件位置要怎么设置呢?下面小编就以“傲游浏览器”为例,简单介绍一下浏览器缓存文件位置的设置方法。 …

JAVA多线程互斥同步例子

package com.imooc.concurrent.racecondition;/*** 宇宙的能量系统* 遵循能量守恒定律:* 能量不会凭空创生或消失,只会从一处转移到另一处*/ public class EnergySystem {//能量盒子,能量存贮的地方private final double[] energyBoxes;priva…

导出为Excel例子 java

前台: //getExcelXML有一个JSON对象的配置,配置项看了下只有title配置,为excel文档的标题 var data $(#dg).datagrid(getExcelXml, { title: datagrid import to excel }); //获取datagrid数据对应的excel需要的xml格式的内容 //组装form提…

edge浏览器下载位置设置

edge浏览器下载位置设置 edge浏览器下载位置怎么设置?很多Win10用户要求微软为Edge浏览器增加下载位置设置选项,今天小编就为大家带来更改Win10 Edge浏览器默认下载位置的三种方法,可通过下面的方法来实现: 方法一: 可通过软媒…