js中的extend的用法及其JS中substring与substr的区别
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()
因为项目中有些地方看到有用到这个方法,当时也不知道是什么意思,见的多了就想了解一下。原来这个方法还是挺有用的,多用在编写插件,当然,它本身也有一些重载原型。也可是实现静态方法:
$.extend({
sayHello: function (name) {
console.log('Hello,' + (name ? name : 'Dude') + '!');
}
})
$.sayHello(); //调用
$.sayHello('Wayou'); //带参调用
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://blog.csdn.net/xuemoyao/article/details/19021659
转载于:https://www.cnblogs.com/gsydw/p/6437645.html
js中的extend的用法及其JS中substring与substr的区别相关推荐
- python中int函数的用法浅析_Python中int()函数的用法浅析
int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builtin__ ...
- python中urframe函数的用法_python类中的内置函数
__init__(): __init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的初始化.注意,这个名称的开始和结尾都是双下划线. 代码例子: #!/usr/bin ...
- python中转义符的用法大全_Python中的各种转义符\n\r\t
Python中属性和描述符的简单使用 Python的描述符和属性是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和 ...
- matlab中imadjust函数的用法,浅析matlab中imadjust函数
imadjust imadjust是一个计算机函数,该函数用于调节灰度图像的亮度或彩色图像的颜色矩阵.在matlab的命令窗口中键入: doc imadjust或者help imadjust即可获得该 ...
- js中slice,SubString和SubStr的区别
slice() 定义和用法 slice() 方法可从已有的数组中返回选定的元素. string.slice(start, end)提取一个字符串 string.substring(start, end ...
- python中if in的用法_if语句中“ in”的使用和含义?
慕的地6264312 由于您声称习惯于JavaScript:Python in运算子类似于JavaScript in运算子.这是一些JavaScript:var d = {1: 2, 3: 4};if ...
- linux中pushd和popd用法,在Linux中使用pushd和popd命令操作目录的用法
pushd 将目录压入目录栈,进行目录切换命令 用法: pushd [-n] [+N | -N | dir] 参数: +n 切换目录,以当前目录为准,从右向左数第n个 -n 切换目录,以当前目录为 ...
- python中int函数的用法浅析_python中int函数怎么用,
详细内容 int() 函数用于将一个字符串会数字转换为整型.接下来通过本文给大家介绍python 中的int()函数的相关知识,感兴趣的朋友一起看看吧 int(x, [base]) 功能: 函数的作用 ...
- Linux操作系统中man命令的用法,Linux 系统中的MAN命令使用祥解
Linux 系统中的MAN命令使用祥解 在使用Linux命令或程序的过程中,大家免不了要看看命令和程序的帮助文档.这就要使用到man命令.下面就man命令使用的方法具体说一下: 1.man 的使用语法 ...
最新文章
- 在线答题系统开发经验mysql,php
- python tab补全
- 最为奇怪的程序语言的特性
- js通过浏览器批量下载图片代码
- 驱动INF文件解析和 为自己的设备安装指定驱动
- 内存——CPU、内存以及磁盘是如何交互的
- android实现自动触摸,Android编程开发之多点触摸(Multitouch)实现方法
- PS暂存盘已满怎么办
- gcc: libc: __ASSEMBLER__; Kernel: __ASSEMBLY__
- nginx: [emerg] CreateFile() “D:\项目资料\nginx-1.12.2/conf/nginx.conf“ failed (1113: No mapping for t
- 排列组合—— 球盒问题
- 如何创建一个原始Mac OS镜像
- 顶尖电子秤ls6恢复出厂_顶尖LS6(X)条码秤调试教程
- 博大考神》2006版之Word2003题库版操作提示
- 分分钟安装VMware,并安装linux操作系统
- 官宣,Google DeepMind 成立
- win7记事本如何转换html,记事本格式_win7记事本怎么改格式
- j2ee期末考试总结
- C# DateTime Subtract
- Android Telephony框架结构简析
热门文章
- C语言作业二选择结构,C语言第二次作业参考答案选择结构.pdf
- linux调试crontab,linux - crontab 的调试,启动thin服务器
- java type 类型,java中的泛型类型与Type接口
- JavaScript省市二级联动
- 显示照片的二维直方图
- ffmpeg-从mp4、flv、ts文件中提取264视频流数据
- IDA——动态调试Linux上的ELF文件(整合他人博客)
- node.js将buffer对象转换为json对象
- 数据可视化【二】HTML+CSS+SVG+D3
- Insertion Sort——打表找规律