1.关于cookie的函数:
Js代码
1./**
2. * cookie操作工具.
3. * 使用方法:保存值:CookieTool('name','1',{expires: 7}) //表示保存一个cookie值为1,键值为name,失效时间7天以后
4. * 取值:CookieTool('name') //返回1
5. * @param {} name
6. * @param {} value
7. * @param {} options
8. * @return {}
9. */
10.CookieTool = function(name, value, options) {
11. if (typeof value != 'undefined') {
12. options = options || {};
13. if (value === null) {
14. value = '';
15. options.expires = -1;
16. }
17. var expires = '';
18. if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
19. var date;
20. if (typeof options.expires == 'number') {
21. date = new Date();
22. date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
23. } else {
24. date = options.expires;
25. }
26. expires = '; expires=' + date.toUTCString();
27. }
28. var path = options.path ? '; path=' + (options.path) : '';
29. var domain = options.domain ? '; domain=' + (options.domain) : '';
30. var secure = options.secure ? '; secure' : '';
31. document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
32. } else {
33. var cookieValue = null;
34. if (document.cookie && document.cookie != '') {
35. var cookies = document.cookie.split(';');
36. for (var i = 0; i < cookies.length; i++) {
37. var cookie = trim(cookies[i]);
38. if (cookie.substring(0, name.length + 1) == (name + '=')) {
39. cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
40. break;
41. }
42. }
43. }
44. return cookieValue;
45. }
46.};
2.关于一个可以查看js对象的js函数,很酷的方法:
Js代码
1./**
2. * 用来查看一个对象的属性
3. */
4.function debugObjectInfo(obj){
5. traceObject(obj);
6.
7. function traceObject(obj){
8. var str = '';
9. if(obj.tagName&&obj.name&&obj.id)
10. str="<table border='1' width='100%'><tr><td colspan='2' bgcolor='#ffff99'>traceObject tag: <"+obj.tagName+"> name = \""+obj.name+"\" id = \""+obj.id+"\" </td></tr>";
11. else{
12. str="<table border='1' width='100%'>";
13. }
14. var key=[];
15. for(var i in obj){
16. key.push(i);
17. }
18. key.sort();
19. for(var i=0;i<key.length;i++){
20. var v= new String(obj[key[i]]).replace(/</g,"<").replace(/>/g,">");
21. str+="<tr><td valign='top'>"+key[i]+"</td><td>"+v+"</td></tr>";
22. }
23. str=str+"</table>";
24. writeMsg(str);
25. }
26. function trace(v){
27. var str="<table border='1' width='100%'><tr><td bgcolor='#ffff99'>";
28. str+=String(v).replace(/</g,"<").replace(/>/g,">");
29. str+="</td></tr></table>";
30. writeMsg(str);
31. }
32. function writeMsg(s){
33. traceWin=window.open("","traceWindow","height=600, width=800,scrollbars=yes");
34. traceWin.document.write(s);
35. }
36.}
3.正则表达式:
g 代表全局匹配
m 代表可以进行多行匹配
i 代表不区分大小写匹配
^ 匹配输入字符串的开始位置
$ 匹配输入字符串的结束位置
* 匹配前面的子表达式零次或多次. 等价于{0,}
+ 匹配前面的子表达式一次或多次. 等价于{1,}
? 匹配前面的子表达式零次或一次. 等价于[0,1} , 当该字符跟在任何一个其他限制符(*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
\d 匹配一个数字字符. 等价于 [0-9]
\D 匹配一个非数字符. 等价于 [^0-9]
\w ,等价于 "[A-Za-z0-9_]"
\W 匹配任何非单词字符,等价于 "[^A-Za-z0-9]"
\s 匹配任何空白字符, 包括空格 制表符 换页符 等等. 等价于[\f\n\r\t\v]
\S 匹配任何非空白字符. 等价于 [^\f\r\n\t\v]
\b 匹配一个单词边界,也就是指单词和空格间的位置。
\B 匹配非单词边界。
正则表达式常用js方法:
Js代码
1./**
2. * 在源字符串中查找满足要求的子串.
3. * @return {}
4. */
5.function MatchDemo() {
6. var r, re; // 声明变量。
7. var s = "The rain in Spain falls mainly in the plain";
8. re = new RegExp("ain", "g"); // 创建正则表达式对象。
9. r = s.match(re); // 在字符串 s 中查找匹配。
10. return (r);
11.}
12.
13./**
14. * 返回在源字符串中的满足正则表达式的全部的字串和位置信息.
15. */
16.function RegExpTest() {
17. var ver = Number(ScriptEngineMajorVersion() + "."
18. + ScriptEngineMinorVersion())
19. var ans = '';
20. if (ver >= 5.5) { // 测试 JScript 的版本。
21. var src = "The rain in Spain falls mainly in the plain.";
22. var re = /\w+/g; // 创建正则表达式模式。
23. var arr;
24. while ((arr = re.exec(src)) != null)
25. ans += arr.index + "-" + arr.lastIndex + arr + "\t";
26. } else {
27. ans = "请使用 JScript 的更新版本";
28. }
29. return ans;
30.}
31.
32./**
33. * 对源字符串进行正则表达式检查,看是不是符合正则表达式.
34. */
35.function TestDemo() {
36. var s1;
37. var source = "abcdefg";
38. var regex = /\w+/g; // 创建正则表达式模式。
39. if (regex.test(source))
40. s1 = " contains ";
41. else
42. s1 = " does not contain ";
43. return ("'" + source + "'" + s1 + "'" + regex.source + "'");
44.}
45.
46./**
47. * 在源字符串中查找正则表达式的字串.
48. * @return {}
49. */
50.function SearchDemo() {
51. var r, re;
52. var s = "The rain in Spain falls mainly in the plain.";
53. re = /falls/i;
54. r = s.search(re);
55. return (r);
56.}
4.很值得学习并要使用好的方法,call():
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
参数
thisObj
可选项。将被用作当前对象的对象。
arg1, arg2, , argN
可选项。将被传递方法参数序列。
说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
简单的例子:
Js代码
1.function add(a,b)
2.{
3. alert(a+b);
4.}
5.function sub(a,b)
6.{
7. alert(a-b);
8.}
9.
10.add.call(sub,3,1);
11.//这个例子中的意思就是用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4);
稍微复杂的例子:
Js代码
1.function Class1()
2.{
3. this.name = "class1";
4.
5. this.showNam = function()
6. {
7. alert(this.name);
8. }
9.}
10.
11.function Class2()
12.{
13. this.name = "class2";
14.}
15.
16.var c1 = new Class1();
17.var c2 = new Class2();
18.
19.c1.showNam.call(c2);
20.//call 的意思是把 c1 的方法放到c2上执行,原来c2是没有showNam() 方法,现在是把c1 的showNam()方法放到 c2 上来执行,所以this.name 应该是 class2,执行的结果就是 :alert("class2");
多重继承的例子:
Js代码
1.function Class10()
2.{
3. this.showSub = function(a,b)
4. {
5. alert(a-b);
6. }
7.}
8.
9.function Class11()
10.{
11. this.showAdd = function(a,b)
12. {
13. alert(a+b);
14. }
15.}
16.
17.
18.function Class2()
19.{
20. Class10.call(this);
21. Class11.call(this);
22.}
5.apply函数:
Function.apply(obj,args)方法能接收两个参数
obj:这个对象将代替Function类里this对象
args:这个是数组,它将作为参数传给Function(args-->arguments)
实现类似call的继承的效果:
Js代码
1.function Person(name,age){ //定义一个类,人类
2. this.name=name; //名字
3. this.age=age; //年龄
4. this.sayhello=function(){alert("hello")};
5.}
6.function Print(){ //显示类的属性
7. this.funcName="Print";
8. this.show=function(){
9. var msg=[];
10. for(var key in this){
11. if(typeof(this[key])!="function"){
12. msg.push([key,":",this[key]].join(""));
13. }
14. }
15. alert(msg.join(" "));
16. };
17.}
18.function Student(name,age,grade,school){ //学生类
19. Person.apply(this,arguments);
20. Print.apply(this,arguments);
21. this.grade=grade; //年级
22. this.school=school; //学校
23.}
24.var p1=new Person("jake",10);
25.p1.sayhello();
26.var s1=new Student("tom",13,6,"清华小学");
27.s1.show();
28.s1.sayhello();
29.alert(s1.funcName);
使用apply进行数组参数的函数的优化,很酷的方法:
Js代码
1.Math.max后面可以接任意个参数,最后返回所有参数中的最大值。
2.
3.比如
4.alert(Math.max(5,8)) //8
5.alert(Math.max(5,7,9,3,1,6)) //9
6.
7.但是在很多情况下,我们需要找出数组中最大的元素。
8.var arr=[5,7,9,1]
9.alert(Math.max(arr)) // 这样却是不行的。一定要这样写
10.
11.function getMax(arr){
12. var arrLen=arr.length;
13. for(var i=0,ret=arr[0];i<arrLen;i++){
14. ret=Math.max(ret,arr[i]);
15. }
16. return ret;
17.}
18.
19.用 apply呢,看代码:
20.function getMax2(arr){
21. return Math.max.apply(null,arr);
22.}
下面是另外一个例子,用来合并两个数组:
Js代码
1.再比如数组的push方法。
2.var arr1=[1,3,4];
3.var arr2=[3,4,5];
4.如果我们要把 arr2展开,然后一个一个追加到arr1中去,最后让arr1=[1,3,4,3,4,5]
5.arr1.push(arr2)显然是不行的。 因为这样做会得到[1,3,4,[3,4,5]]
6.
7.我们只能用一个循环去一个一个的push(当然也可以用arr1.concat(arr2),但是concat方法并不改变arr1本身)
8.var arrLen=arr2.length
9.for(var i=0;i<arrLen;i++){
10. arr1.push(arr2[i]);
11.}
使用apply的话:
Js代码
1.Array.prototype.push.apply(arr1,arr2)
分享到:
相关推荐
理解JavaScript的caller callee call apply
主要介绍了javascript中call,apply,callee,caller用法,结合实例形式分析了javascript中call,apply,callee,caller功能、使用方法及相关操作注意事项,需要的朋友可以参考下
NULL 博文链接:https://cuckoosnest.iteye.com/blog/470131
主要介绍了JavaScript函数callee、call、apply的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
正则表达式 call(),apply(),callee,caller,cookie方法,setInterval(),clearInterval(),setTimeout() ,clearTimeout()
js中arguments,caller,callee,apply的用法小结.docx
js apply/call/caller/callee/bind使用方法与区别分析,需要的朋友可以参考下。
js的隐含参数(arguments,callee,caller)使用方法.docx
Javascript – 全面理解 caller,callee,call,apply Author: BlueDestiny, never-online From: http://www.never-online.net, Blog.csdn.net/BlueDestiny 1、caller JScript参考中说明为:返回一个对函数的...
本文实例讲述了JavaScript中callee和caller的区别与用法。分享给大家供大家参考,具体如下: 1.callee 在函数的内部,有两个特殊的对象:arguments和this。其中arguments是一个类似数组的对象,包含着传入函数的所有...
本篇文章只要是对js的隐含参数(arguments,callee,caller)使用方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
NULL 博文链接:https://davidxiaozhi.iteye.com/blog/1026937
有些小伙伴可能会问caller,callee 是什么?在javascript 中有什么样的作用?那么本篇会对于此做一些基本介绍。希望能够对大家理解javascript中的callee与caller有所帮助。
理解Javascript的caller,callee,call,apply区别
compile 方法 将一个正则表达式编译为内部格式。 复合赋值运算符 复合赋值运算符列表。 concat 方法 (Array) 返回一个由两个数组合并组成的新数组。 concat 方法 (String) 返回一个包含给定的两个字符串连接...
compile 方法 将一个正则表达式编译为内部格式。 复合赋值运算符 复合赋值运算符列表。 concat 方法 (Array) 返回一个由两个数组合并组成的新数组。 concat 方法 (String) 返回一个包含给定的两个字符串连接...
compile 方法 将一个正则表达式编译为内部格式。 复合赋值运算符 复合赋值运算符列表。 concat 方法 (Array) 返回一个由两个数组合并组成的新数组。 concat 方法 (String) 返回一个包含给定的两个字符串连接...
挺好的,虽然我用的是jQuery,但感觉还是有些用的~~~