自从毕业以后到现在~看的书是越来越少了
の其实好像貌似从来没有认认真真的看书 除非工作遇到难于解决的问题迫不得已才去翻书看
有些问题也是莫名其妙的就这样解决了 于是乎被人美名其曰“高人”或"大师
那个额头冒汗的呀 心里直发虚哈
我很想成为一名js高手 就像我师父那样的(我心中的偶像呐)(*^__^*)
我不想似懂非懂也不想不懂装懂更不想在那里凭着工作经验说事儿~~
我是不是很固执啊~有的人说女生麽 干嘛那么较真 马马虎虎的得过且过就可以了
no way~o(>﹏<)o不要啊 我就想成为真正的js高手 (╰_╯)#
所以从今天开始我要好好的认真的看完一本书 希望能得到大家的监督哈
我一进公司。。我的第一个师父就给了我2本书 一本是这个 还有一本是css的
当时看的是挺认真的~但现在早就忘光光啦
这本书讲述的很详细 是外文翻译过来的~我想再系统的看一遍 结合我现有的工作经验好好的再细化下我的知识~
希望能得到质的飞跃\(^o^)/~
我会根据书中的目录的顺序来记录 对于书中的知识点~我会结合自己的实际工作经验来摘取
---------------------------part1----------------------------------------------------------------------------------------------------------
★数据类型和值★
基本概述&#xff1a;3种基本数据类型——数字 字符串 布尔类型
2种小的数据类型——null undefined
复合数据类型——对象 数组 函数 其他的类比如Date RegExp
- 数字&#xff08;number&#xff09;
我经常用的是十进制~数字么 无非就是&#43;-*/运算哈
然后就要了解特殊的数值
常量 含义 案例 函数检测
Infinity 表示无穷大的特殊值 超过数字的最大值 isFinite()来检测是否是正负无穷大&#xff0c;NaN
NaN 特殊的非数字值 0/0产生了未定义的结果或错误时 isNaN()
方法归类
toString() 把数字转化成字符串
valueof() 返回一个Number对象的基本数字值
toFixed(0/1/2) 把数字转化成字符串 并指定小数位
2. 字符串&#xff08;string&#xff09;
说到字符串我首先想到的就是反斜线\ (专有名词叫转义系列)
在工作经常用到\ “ 和 \&#39; eg:"pp\"ss\""
Javascript常用的转义系列
序列 所代表的字符
\n 换行符
\r 回车符
\" 双引号
\&#39; 单引号
\\ 反斜线
属性归类
length 字符串中的字符数
方法归类
1&#xff09;. chartAt(n) 返回指定位置处的字符
string.concat(value,...) 把一个或多个值连接到字符串上 同”&#43;“的功能一样 我觉得用 ”&#43;”更简单些
2&#xff09;. indexof(substring) or indexof(substring,start)
检索字符串 s.indexof("abc") 返回找到abc在s的第一个出现的位置 如果没有找到返回-1 这个我在工作中还蛮经常用到的
3&#xff09;. lastIndexof(substring) or lastIndexof(substring,start)
从后向前检索一个字符串 刚好indexof()方向相反 在工作中我经常这样用&#xff1a;
//判断字符串是否以某个子串结尾的 String.prototype.endsWith &#61; function(s){var p &#61; this.lastIndexOf(s);if(p&#43;s.length&#61;&#61;this.length){return true;}elsereturn false;}
4&#xff09;. string.replace(regExp,replacement)
替换一个与正则表达式匹配的子串 返回的是一个新的字符串,string没有被改变
字符串string的方法replace()执行的是查找并替换的操作。它将在string中查找与regexp相匹配的子串&#xff0c;然后用replacement替换这些子串。
如果regexp具有全局性质g,那么replace()将将所有的匹配子串。否则他只替换第一个匹配的子串。
还有replacement可以是字符串&#xff0c;也可以是函数呢~ps之前我不知道 这也是一个知识点哦~
//显示特殊符号String.prototype.toShow &#61; function () {var RexStr &#61; /\s|\<|\>|\"|\&#39;|\&/g;str &#61; this.replace(RexStr,function(MatchStr){switch(MatchStr){case " ":return " ";break;case "<": return "<";break; case ">": return ">";break; case "\"": return &#39;"&#39;;break; case "\&#39;": return "&#39;";break;case "&":return "&";break;default :break;}});return str; };//去掉字符串首尾空格String.prototype.trim &#61; function () {var reg &#61; /(^\s*)|(\s*$)/g;return this.replace(reg, "");};
PS:我的代码哪里出问题了嘛&#xff1f;~为什么没有变色&#xff1f;
5&#xff09;.string.slice(strat,end) 和 string.subString(start,end)
返回字符串的一个子串。 从start开始(包括start)到end为止(不包括end)的所有字符。
slice比subString更灵活&#xff0c;因为他允许负数作为参数。如果是负数&#xff0c;那么参数声明了从字符串的尾部开始算起的位置。-1指字符串中的最后一个字符。
6&#xff09;.string.split(",")
将字符串分割成字符串数组。返回一个字符串数组
eg:s &#61; "1|2|3|4" var pp &#61; s.split("|") &#61;&#61;&#61;&#61;&#61;&#61;pp:[1,2,3,4]
7&#xff09;.string.toUpperCase() 和 string.toLowerCase()
将字符串转换成大写 将字符串转换成小写
3. 布尔值&#xff08;boolean&#xff09;
只有true和false2种~ 0,NaN,undefined,null,"“都将转化成false..其他的都会转换成true
方法归类
valueof () 返回Boolean对象中存放的原始的布尔值
toString() 返回Boolean对象代表的布尔值返回"true"或”false“
4. null 和 undefined
null代表“无值” 即代表”无对象“的值
undefined代表使用了一个未声明的变量或已声明但未赋值的变量又或者使用了一个并不存在的对象属性时
undefined不同于null 但是运算符&#61;&#61;却将2者看做相等
如果你想区分null和undefined 可以使用&#61;&#61;&#61; 或 typeof
5. 数组 (arry)
数组我想大家很熟悉吧~我现在了组要归纳下他的方法。。属性的话就是length
方法归类
1) .array.concat(value,....)
连接数组。返回一个新的数组&#xff0c;如果value是一个数组&#xff0c;那么添加的是数组中的元素&#xff0c;而不是数组
eg:var a&#61;[1,2,3] a.concat([4,5],[6,[7,8]]) //returns [1,2,3,4,5,6,[7,8]]
在工作中我经常用来复制数组
//复制数组Array.prototype.copy&#61;function(o){return this.concat();};
2) .array.join(separator)
将数组元素连接成一个字符串。我想大家这个不会陌生吧~当无参数时&#xff0c;用逗号作为分隔符。
我想大家一定想到了string中的split方法 好聪明啊~正好2个是相反的操作
eg&#xff1a;a &#61; [1,2,3] return a.join(" ") // return "123"
3) .array.pop() 和 array.push()
pop:删除并返回数组的最后一个元素 改变了array的长度并且返回最有一个值。。若果数组是空的则返回undefined
push:给数组添加新的元素
4) .array.reverse() 颠倒数组中的元素顺序~它是在原数组上实现这个以操作作为替换。。。记住啦 他不是创建一个新的数组呢
5) .array.shift() 和 array.unshift()
shift: 移除数组的第一个元素并返回该元素 是不是pop()方法很类似~一个是第一个元素&#xff0c;还有一个是最后一个元素
unshift:跟shift相反。。它是在数组头部插入元素&#xff0c;返回数组的长度.
eg:var a&#61;[];a.unshift(1) //a:[1] return:1a.unshit(22) //a:[22,1] return:2 a.shift() //a:[1] return: 22a.unshift(33,[4,5]) //a:[33,[4,5],1] return:3
6) .array.slice(start,end)
返回数组的一部分 与字符串的slice差不多 包含从start到end(不包括end)的指定元素
而且start跟end都可以为负数 -1代表数组的最后一个
eg: var a &#61; [1,2,3,4,5]a.slice(0,3) //return:[1,2,3]a.slice(3) //return:[4,5]a.slice(1,-1) //return:[2,3,4]
7) .array.splice(index,howmany,值1,值2,...)
用于插入、删除或替换数组的元素。该方法会修改数组本身&#xff0c;而不是创建一个新数组。
参数&#xff1a;index&#xff1a;必需。规定从何处添加/删除元素。
howmany&#xff1a;必需。规定应该删除多少个元素。可以是0。
值1,值2,...&#xff1a;可选。规定要添加到数组的新元素。从index所指的下标处开始插入。
返回值&#xff1a;修改后的数组。
注1&#xff1a;该方法会修改数组本身&#xff0c;而不是创建一个新数组。
注2&#xff1a;当只给出index和howmany参数&#xff0c;实现的是删除元素功能。
注3&#xff1a;当howmany参数为0&#xff0c;且给出添加的数值&#xff0c;实现的是插入元素功能。
注4&#xff1a;当howmany参数不为0&#xff0c;且给出添加的数值&#xff0c;实现的是替换元素功能。
eg:var a &#61;[1,2,3,4,5,6,7,8];a.splice(4) // a:[1,2,3,4]a.splice(1,2) // a:[1,4]a.splice(1,1) // a:[1]a.splice(1,0,2,3) // a:[1,2,3]
对于这个方法。我们经常可能会这样封装一下再使用
1>删除指定位置的元素
Array.prototype.removeAt &#61; function(i){
this.splice(i,1)
}
&#96; 2>删除指定的元素
Array.prototype.remove &#61; function(o){
var index &#61; this.indexof(o)
if(index!&#61;-1)
this.splice(i,1)
}
3>在数组指定的位置处插入元素
Array.prototype.insertAt &#61; function(o,i){
this.splice(i,0,o)
}
4>在某元素后插入新的元素
Array.prototype.insetAfter &#61; function(o,o2){
var index &#61; this.indexof(o);
if(index &#61;&#61; -1)
this.push(o2);
else
this.splice(index,0,o2)
}
3种基本数据类型整理完毕 ~~~~(>_<)~~~~ 累死了
下次整理复合类的数据~加油加油↖(^ω^)↗
ps:如果哪里写错了~希望各位大侠能够指出来 帮帮我这个小虾米~
PPS:http://365353618.taobao.com/?spm&#61;2013.1.1000126.21.mAzNyB是我的点店哦~欢迎来看看哈