1. JavaScript 数据类型: 字符串、数字、布尔、数组、对象、Null、Undefined
细分:
基本类型/值类型: 数值、布尔值、null、undefined
引用类型:对象、数组、函数。
行为与基本类型相似的不可变引用类型: 字符串(字符串具有可变的大小,它不能被直接存储在具有固定大小的变量中, 但没法改变一个字符串值的内容, 字符串在许多方面都和基本类型的表现相似)
2. JavaScript判断类型
number、string、array、object、Boolean、null、undefined
1. typeof array、object、null都返回object
2. instanceof只能用来判断对象和函数,不能用来判断字符串和数字.
X instanceof Array 判断数组
[] instanceof Array
var a = '123';
a instanceof String // false
var b = new String('123');
b instanceof String // true
typeof a =='string' // true
var c = [1,2,3];
c instanceof Array // true
var d = {'1': '1'};
d instanceof Object // true
var e = 1;
e instanceof Number; // false
var f = new Number(1);
f instanceof Number; // true
3. X.constructor == Array/Object/String/Number/Boolean
3. JavaScript 对象
No1. Array
**********************************************************************************
Type1. 不会改变现有的数组
--------------------------------------------------------------------------
1. concat()
arrayObject.concat(arrayX,arrayX,......,arrayX)。
arrayX 必需。该参数可以是具体的值/数组对象。可以是任意多个。
连接两个或更多的数组,并返回结果(不去重)。
var a = [1,2,3];
b = a.concat(4,5); //[1,2,3,4,5]
var a = [1,2,3];
var b = [1,2,3];
c = a.concat(b) //[1, 2, 3, 1, 2, 3]
2. jion()
arrayObject.join(separator) separator 可选。指定要使用的分隔符。默认,。 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 var a = [1,2,3]; a.join() //"1,2,3" a.join('.') //"1.2.3"
3. slice()
arrayObject.slice(start,end) 左闭右开 start 必需。选取开始位置。负数,表示从数组尾部开始算起的位置。-1 指最后一个元素,-2 指倒数第二个元素,以此类推。 end 可选。结束位置。该参数是结束的数组下标。如果没有指定该参数,那么包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 var a = [1,2,3,4,5,6,7,8]; a.slice(0) // [1, 2, 3, 4, 5, 6, 7, 8] a.slice(1) // [2, 3, 4, 5, 6, 7, 8] a.slice(3,5) // [4, 5] a.slice(-3,-2) // [6] a.slice(-1,-2) // []
4. toString() 把数组转换为字符串,并返回结果。
arrayObject.toString() == arrayObject.join() var a = [1,2,3]; a.toString() // "1,2,3"
5. toLocaleString()
arrayObject.toLocaleString() 把数组转换为本地数组,并返回结果。toLocaleString()方法,主要用于将数组 Number对象或Date对象转换为本地格式的字符串. var a = [1,2,3]; a.toLocaleString() // "1, 2, 3 "
Type2. 会改变现有的数组
--------------------------------------------------------------------------
6. pop()
arrayObject.pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减1,并且返回它删除的元素的值。 如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。 var a = [1,2,3]; a.pop() //3 a // [1,2] a.pop() //2 a.pop() //1 a.pop() //undefined
7. shift()
arrayObject.shift()
方法用于把数组的第一个元素从其中删除,把数组长度减1,并返回第一个元素的值。
如果数组是空的,那么 shift() 方法将不进行任何操作,返回 undefined 值。
var a = [1,2,3];
a.shift() // 1
8. push()
arrayObject.push(newelement1,newelement2,....,newelementX) 该方法会改变现有的数组(arrayObject)。 newelement1 必需。要添加到数组的第一个元素。 newelement2 可选。要添加到数组的第二个元素。 newelementX 可选。可添加多个元素。 向数组的末尾添加一个或更多元素,并返回新的长度。 var a = [1,2,3]; var b = [1,2,3]; a.push(5) // 4 a // [1, 2, 3, 5] a.push(b) // 5 a // [1, 2, 3, 5, [1,2,3]]
9. unshift()
arrayObject.unshift(newelement1,newelement2,....,newelementX) newelement1 必需。向数组添加的第一个元素。 newelement2 可选。向数组添加的第二个元素。 newelementX 可选。可添加若干个元素。 向数组的开头添加一个或更多元素,并返回新的长度。无法在 Internet Explorer 中正确地工作! var a = [1,2,3]; a.unshift(0) // 4 a // [0, 1, 2, 3] a.unshift(0,1,2,3) // 8 a //[0, 1, 2, 3, 0, 1, 2, 3]
10. reverse()
arrayObject.reverse() 颠倒数组中元素的顺序。 var a = [1,2,3]; a.reverse() // [3, 2, 1] a // [3, 2, 1]
11. sort()
arrayObject.sort(sortby) sortby 可选。规定排序顺序。必须是函数。 方法用于对数组的元素进行排序。根据字母排序的 var a = [1,2,3, [1,2,3]]; a.sort() // [1,[1,2,3],2,3] a // [1,[1,2,3],2,3] var b = [1,10,1000,25,40,5]; // **************** sortNumber(a,b) { return b-a } b.sort() //[1, 10, 1000, 25, 40, 5] b.sort(sortNumber) // [1000, 40, 25, 10, 5, 1] a.sort(sortNumber) // [1,[1,2,3],3,2]
12. splice()
arrayObject.splice(index,howmany,item1,.....,itemX) index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 item1, ..., itemX 可选。向数组添加的新项目。 删除元素,并向数组添加新元素。返回的是含有被删除的元素的数组。否则是[] var a = [1,2,3]; a.splice(3,0,'') // [] a // [1, 2, 3, ""] a.splice(3,0) // [] a // [1, 2, 3, ""] a.splice(3,1) // [""] a // [1, 2, 3] a.splice(3,0,5,6,7,8) // [] a // [1, 2, 3, 5, 6, 7, 8] a.splice(3,0,4) // [] a // [1, 2, 3, 4, 5, 6, 7, 8] a.splice(3,4) // [4, 5, 6, 7] a // [1, 2, 3, 8]
No2. Boolean
**********************************************************************************
1. toString()
booleanObject.toString() 把数组转换为字符串,并返回结果。该方法不会改变现有的数组(booleanObject)。 a = true a.toString() //"true"
No3. Number
**********************************************************************************
1. toString()
NumberObject.toString(radix) 把数组转换为字符串,并返回结果。该方法不会改变现有的数组(NumberObject)。 radix 可选。规定数字的基数,使 2 ~ 36 之间的整数。默认基数 10。10 以外的其他值,则 ECMAScript 标准允许实现返回任意值。 var number = 32 number.toString(2) // "100000" number.toString(8) // "40" number.toString(16) // "20"
2. toLocaleString()
NumberObject.toLocaleString() 根据本地规范进行格式化,可能影响到小数点或千分位分隔符采用的标点符号。 var number = 32 number.toLocaleString() // "32"
3. toFixed()
NumberObject.toFixed(num) 可把 Number 四舍五入为指定小数位数的数字。 num 必需。规定小数的位数[0~20],或更大。默认0。 var number = 32.55 number.toString() // "33" number.toFixed(1) // "32.5" //存在问题 number.toFixed(2) // "32.55" number.toFixed(3) // "32.550" function refineToFixed(number,fractionDigits){ return Math.round(number * Math.pow(10,fractionDigits)) / Math.pow(10,fractionDigits); } number.toFixed(number, 1) // "32.6" //存在问题
4. toPrecision()
NumberObject.toPrecision(num)可在对象的值超出指定位数时将其转换为指数计数法。 num 必需。规定必须被转换为指数计数法的最小位数[1~21]。 有效实现允许有选择地支持更大或更小的 num。 如果省略了该参数,则调用方法 toString(),而不是把数字转换成十进制的值。 var number = 10000000 number.toPrecision(4) // "1.000e+7" var number = 10 number.toPrecision(4) // "10.00"
No4. Date
**********************************************************************************
1. Date() 返回当日的日期和时间。
Date() // "Tue Mar 14 2017 11:09:04 GMT+0800 (CST)"
2. getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
3. getDay() 从 Date 对象返回一周中的某一天 (0(周日)到 6(周六))。
4. getMonth() 从 Date 对象返回月份 (0 ~ 11)。
5. getFullYear() 从 Date 对象以四位数字返回年份。
7. getHours() 返回 Date 对象的小时 (0 ~ 23)。
8. getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
9. getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
10. getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
11. getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
12. getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
13. getUTC***() 根据世界时
var d = new Date(); // 2017-03-14 周二 var birthday = new Date("July 21, 1983 01:15:00") d // Tue Mar 14 2017 11:16:04 GMT+0800 (CST) d.getDate() // 14 d.getDay() // 2 d.getMonth() // 2 //3月 d.getFullYear() // 2017 d.getHours() // 11 d.getMinutes() // 16 d.getSeconds() // 4 d.getMilliseconds() // 462 d.getTime() // 1489461364462 d.getTimezoneOffset() // -480 d.getUTCDate() // 14 d.getUTCHours() // 3 //晚8个小时
14. parse() 返回1970年1月1日午夜到具体日期(字符串)的毫秒数。到日
Date.parse(datestring) datestring 必需。表示日期和时间的字符串。 var d = Date.parse("Tue Mar 14 2017 11:16:04 GMT+0800 (CST)") d // 1489461364000
15. setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
16. setMonth() 设置 Date 对象中月份 (0 ~ 11)。
17. setFullYear() 设置 Date 对象中的年份(四位数字)。
18. setHours() 设置 Date 对象中的小时 (0 ~ 23)。
19. setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
20. setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
21. setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
22. setTime() 以毫秒设置 Date 对象。
23. setUTC***() 根据世界时
dateObject.setDate(day) dateObject.setMonth(day) dateObject.setFullYear(day) dateObject.setHours(day) dateObject.setMinutes(day) dateObject.setSeconds(day) dateObject.setMilliseconds(day) dateObject.setTime(day) var d = new Date() // 2017-03-14 周二 d // Tue Mar 14 2017 12:05:09 GMT+0800 (CST) d.setDate(15) // 1489550709064 d // Wed Mar 15 2017 12:05:09 GMT+0800 (CST) d.setMonth(4) // 1494821109064 d // Mon May 15 2017 12:05:09 GMT+0800 (CST) d.setSeconds(36) // 1494821136064 d // Mon May 15 2017 12:05:36 GMT+0800 (CST) dateObject.setTime(millisec)调用 Date.UTC() 和 Date.parse()方法获得值 var d = new Date() d // Tue Mar 14 2017 12:11:13 GMT+0800 (CST) d.setTime(1494821136064) // 1494821136064 d //
24. toString() 把 Date 对象转换为字符串。
dateObject.toString() var d = new Date() d // Tue Mar 14 2017 12:22:50 GMT+0800 (CST) d.toString() // "Tue Mar 14 2017 12:22:50 GMT+0800 (CST)"
25. toTimeString() 把 Date 对象的时间部分转换为字符串。
26. toDateString() 把 Date 对象的日期部分转换为字符串。
var d = new Date() d // Tue Mar 14 2017 12:24:59 GMT+0800 (CST) d.toTimeString() // "12:24:59 GMT+0800 (CST)" d.toDateString() // "Tue Mar 14 2017"
27. toUTCString() 根据世界时,把 Date 对象转换为字符串。
var d = new Date() d // Tue Mar 14 2017 12:24:59 GMT+0800 (CST) d.toUTCString() // "Tue, 14 Mar 2017 04:26:12 GMT" //晚8小时
28. toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。
29. toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串。
30. toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串。
var d = new Date() d // Tue Mar 14 2017 12:28:38 GMT+0800 (CST) d.toLocaleString() // "3/14/2017, 12:28:38 PM" d.toLocaleTimeString() // "12:28:38 PM" d.toLocaleDateString() // "3/14/2017"
31. UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。 与parse()比较
Date.UTC(year,month,day,hours,minutes,seconds,ms) Date.UTC(2017,3,14) // 1492128000000
No5. Math
**********************************************************************************
1. random() 返回 0 ~ 1 之间的随机数。[0,1)
2. abs(x) 返回数的绝对值。
3. ceil(x) 对数进行上舍入。
4. floor(x) 对数进行下舍入。
5. round(x) 把数四舍五入为最接近的整数。
6. sqrt(x) 返回数的平方根。
7. max(x,y) 返回 x 和 y 中的最高值。
8. min(x,y) 返回 x 和 y 中的最低值。
9. pow(x,y) 返回 x 的 y 次幂。
Math.pow(2,3) // 8 Math.pow(-2,3) // -8 Math.pow(-2,4) // 16 // 获取一定区域的随机整数值 //可取到最大值 function getRandomNum(minNum,maxNum) { var numRange = maxNum - minNum; var randNum = Math.random(); // [0,1) return (minNum + Math.round(randNum * numRange)); } //可取到最大值, 几率大 function getRandomNum(minNum,maxNum) { var numRange = maxNum - minNum +1; var randNum = Math.random(); // [0,1) return (minNum + Math.floor(randNum * numRange)); } //小数 function getRandomNum(minNum,maxNum) { var numRange = maxNum - minNum +1; var randNum = Math.random(); // [0,1) return minNum + randNum * numRange; } var num = getRandomNum(2,32); //重写toFixed方法 function refineToFixed(number,fractionDigits){ return Math.round(number * Math.pow(10,fractionDigits)) / Math.pow(10,fractionDigits); }
No6. String
**********************************************************************************
1. charAt() 返回在指定位置的字符。
2. charCodeAt() 返回在指定的位置的字符的 Unicode 编码。
stringObject.charAt(index) index 必需。表示字符串中某个位置的数字,即字符在字符串中的下标。 var str="test"; str.charAt(1) // "e" str.charAt(5) // "" str.charCodeAt(1) // 101
3. concat() 连接字符串。 该方法不会改变现有的字符串, 使用"+"进行字符串的连接
stringObject.concat(stringX,stringX,...,stringX) stringX 必需。将被连接为一个字符串的一个或多个字符串对象。 var str1="test: " var str2="No1" str1.concat(str2) // "test: No1" str1 // "test: " str1 + str2 // "test: No1" str1 // "test: "
4. fontcolor() 使用指定的颜色来显示字符串。
5. fontsize() 使用指定的尺寸来显示字符串。
stringObject.fontcolor(color) color 必需。该值必须是颜色名(red)、RGB 值(rgb(255,0,0))、十六进制数(#FF0000)。 var str="test" str.fontcolor("Red") // "<font color="Red">test</font>" str.fontsize(7) // "<font size="7">test</font>" str //"test"
6. indexOf() 检索字符串。 可返回某个指定的字符串值在字符串中首次出现的位置。
7. lastIndexOf() 从后向前搜索字符串。索引位置与indexOf相同
stringObject.indexOf(searchvalue,fromindex) searchvalue 必需。规定需检索的字符串值。 fromindex 可选的整数参数。规定在字符串中开始检索的位置。[0~stringObject.length - 1]。如省略该参数,则将从字符串的首字符开始检索。 var str = 'orange'; str.indexOf('o'); // 0 str.lastIndexOf('o') // 0 str.indexOf('n'); // 3 str.indexOf('c'); // -1 var num = 2017; num.toString().indexOf(2); // 0 ('' + num).indexOf(2); // 0 var arr = ['2015', '2016', '2017']; arr.indexOf(2) // -1 arr.indexOf('2') // -1 arr.indexOf('2015') // 0 arr.toString().indexOf('2') // 0 arr.toString().indexOf(2) // 0
8. localeCompare() 用本地特定的顺序来比较两个字符串。
stringObject.localeCompare(target) stringObject > target 返回1 stringObject < target 返回-1 stringObject == target 返回0 '1'.localeCompare('2') // -1 '1'.localeCompare('-1') // 1 '1'.localeCompare('1') // 0 var str=['3', '1', '2']; str.sort(function(a,b){return a.localeCompare(b)})
9. match() 找到一个或多个正则表达式的匹配。该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
stringObject.match(searchvalue/regexp) searchvalue 必需。规定要检索的字符串值。 regexp 必需。规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。
如果 regexp 没有标志 g,只查找一次,有g,全局检索. var str = 'test1 test2 test3'; str.match('test') // ["test"] str.match(/d+/g) // ["1", "2", "3"] str.match(/d+/) // ["1"]
10. replace() 替换与正则表达式匹配的子串。
stringObject.replace(regexp/substr,replacement) regexp/substr 必需。该值是一个字符串,则将它作为要检索的直接量文本模式. replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。 var str = 'test1 test2 test3'; str.replace(/test/g, "Test") // "Test1 Test2 Test3" str.replace(/test/, "Test") // "Test1 test2 test3"
11. search() 检索与正则表达式相匹配的值。
stringObject.search(regexp) var str = 'test1 Test2 test3'; str.search('Test') // 6 str.search(/Test/) // 6 str.search(/Test/i) // 0 str.search(/Test/g) // 6
12. slice() 提取字符串的片断,并在新的字符串中返回被提取的部分。
stringObject.slice(start,end) start 起始下标。-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。 end 结尾下标。默认字符串结尾。负数同上 var str = 'test1 Test2 test3'; str.slice(6) // "Test2 test3" str.slice(6, 11) // "Test2" str // "test1 Test2 test3"
13. substr() 从起始索引号提取字符串中指定数目的字符。
stringObject.substr(start,length) start 起始下标。-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。 length 可选。子串中的字符数。必须是数值。默认从 start位置到结尾的字串。 var str = 'test1 Test2 test3'; str.substr(6) // "Test2 test3" str.substr(6, 5) // "Test2" str // "test1 Test2 test3"
14. substring() 提取字符串中两个指定的索引号之间的字符。一般不用
stringObject.substring(start,stop) start 必需。>0 整数, stop 可选。>0 整数,默认从 start位置到结尾。 var str = 'test1 Test2 test3'; str.substring(6) // "Test2 test3" str.substring(6, 11) // "Test2" str // "test1 Test2 test3"
15. split() 把字符串分割为字符串数组。
16. toString() 返回字符串。
stringObject.split(separator,howmany) separator 必需。字符串或正则表达式,从该参数指定分割。 howmany 可选。限制数组长度。无该参数,整个字符串都会被分割。 var str = 'test1 Test2 test3'; str.split(" ") // ["test1", "Test2", "test3"] str.split(" ",2) // ["test1", "Test2"] tr.split("",2) // ["t", "e"] str // "test1 Test2 test3" str.split(" ",2).toString() // "test1,Test2"
17. toLocaleLowerCase() 把字符串转按照本地方式换为小写。几种特殊字符不同
18. toLocaleUpperCase() 把字符串转按照本地方式换为大写。
19. toLowerCase() 把字符串转换为小写。
20. toUpperCase() 把字符串转换为大写。
var str = "aBcDeF"; str.toLocaleLowerCase() // "abcdef" str.toLocaleUpperCase() // "ABCDEF" str.toLowerCase() // "abcdef" str.toUpperCase() // "ABCDEF"
No7. 全局对象
**********************************************************************************
1. decodeURI() 解码某个编码的 URI。
2. encodeURI() 把字符串编码为 URI。
3. decodeURIComponent() 解码一个编码的 URI 组件。
4. encodeURIComponent() 把字符串编码为 URI 组件。
decodeURI(URIstring) URIstring 必需。一个字符串,含有要解码的 URI 或其他要解码的文本。 var str = 'www.baidu.com/test test' encodeURI(str) // "www.baidu.com/test%20test" decodeURI(encodeURI(str)) // "www.baidu.com/test test" encodeURIComponent(str) // "www.baidu.com%2Ftest%20test" decodeURIComponent(encodeURIComponent(str)) // "www.baidu.com/test test" decodeURI(encodeURIComponent(str)) // "www.baidu.com%2Ftest test"
5. isNaN() 检查某个值是否是数字。
6. Number() 把对象的值转换为数字。
7. parseFloat() 解析一个字符串并返回一个浮点数。
8. parseInt() 解析一个字符串并返回一个整数。
9. String() 把对象的值转换为字符串。