ES6 语法基础2--标准库
4. 标准库
a. Object对象
JavaScript 原生提供Object对象
JavaScript 的所有其他对象都继承自Object对象,即那些对象都是Object的实例。
Object对象的原生方法分成两类:Object本身的方法与Object的实例方法。
(1)Object对象本身的方法
Object.print = function (o) { console.log(o) };
(2)Object的实例方法
Object.prototype.print = function () {
console.log(this);
};
主要方法:
Object.prototype.toString() 返回一个对象的字符串形式,默认情况下返回类型字符串。
Object.prototype.hasOwnProperty() 接受一个字符串作为参数,返回一个布尔值,表示该实例对象自身是否具有该属性
b. Array对象
// bad
let arr = new Array(1, 2);
// good
let arr = [1, 2];
arr.length // 2
Array.isArray(arr) // true
arr.valueOf() // [1, 2]
arr.toString() // “1, 2”
添加删除元素
arr.push(3) // [1, 2, 3]
arr.pop() // 3
arr // [1, 2]
arr.shift() // 1
arr // [2]
a.unshift('x'); // 2 返回数组长度
a // ['x', 2]
连接移动
['a',, 'b'].join('-')
// ‘a--b'
['hello'].concat(['world'], ['!'])
// ["hello", "world", “!"]
let a = ['a', 'b', 'c'];
a.reverse() // ["c", "b", “a"] 原地修改
a.slice(1, 2) // [“b"] 不修改原数组
let a = ['a', 'b', 'c', 'd', 'e', 'f'];
a.splice(4, 2) // ["e", “f"] 提取并修改原数组
排序
[4, 3, 2, 1].sort()
// [1, 2, 3, 4]
[
{ name: "张三", age: 30 },
{ name: "李四", age: 24 },
{ name: "王五", age: 28 }
].sort(function (o1, o2) {
return o1.age - o2.age;
})
// [
// { name: "李四", age: 24 },
// { name: "王五", age: 28 },
// { name: "张三", age: 30 }
// ]
列举
map() ****将数组的所有成员依次传入参数函数,然后把每一次的执行结果组成一个新数组返回:
let numbers = [1, 2, 3];
numbers.map(function (n) {
return n + 1;
});
// 返回[2, 3, 4] ,不影响原数组
forEach() 与map方法很相似,但是参数方法不返回值,只用于遍历数组
function log(element, index, array) {
console.log('[' + index + '] = ' + element);
}
[2, 5, 9].forEach(log);
// [0] = 2
// [1] = 5
// [2] = 9
filter()用于过滤数组成员,满足条件的成员组成一个新数组返回
[1, 2, 3, 4, 5].filter(function (elem) {
return (elem > 3);
})
// [4, 5]
reduce方法和reduceRight****方法依次处理数组的每个成员,最终累计为一个值。
它们的差别是,reduce是从左到右处理,reduceRight则是从右到左,其他完全一样
indexOf方法返回给定元素在数组中第一次出现的位置,如果没有出现则返回-1
['a', 'b', 'c'].indexOf('a') //0
填充
new Array(3).fill(7)
// [7, 7, 7]
c.Number对象
(10).toString() // “10"
(10.005).toFixed(2) // “10.01" 将一个数转为指定位数的小数,然后返回这个小数对应的字符串
(10).toExponential() // “1e+1" 将一个数转为科学计数法形式
(12.34).toPrecision(3) // “12.3" 将一个数转为指定位数的有效数字(用于四舍五入时不太可靠,跟浮点数不是精确储存有关)
自定义方法
Number.prototype.add = function (x) {
return this + x;
};
8.add(2) // 10
d. String对象
let s = 'hello';
s.length // 5
'abc'[1] // "b"
let one = 1;
let two = 2;
let three = ‘3';
one + two + three // “33"
'JavaScript'.slice(0, 4) // “Java"不改变原字符串
'hello world'.indexOf('o') // 4
' hello world '.trim()
// "hello world” 不改变原字符串
'Hello World'.toLowerCase()
// "hello world"
'Hello World'.toUpperCase()
// "HELLO WORLD”
'cat, bat, sat, fat'.match('at') // ["at"]
'cat, bat, sat, fat'.match('xt') // null
'cat, bat, sat, fat'.search('at') // 1 返回值为匹配的第一个位置
'aaa'.replace('a', 'b') // “baa"
'a|b|c'.split('|') // ["a", "b", "c"]
e. Math对象
Math.PI:常数 Pi
Math.abs():绝对值
Math.ceil():向上取整
Math.floor():向下取整
Math.max():最大值
Math.min():最小值
Math.pow():指数运算
Math.sqrt():平方根
Math.log():自然对数
Math.exp():e的指数
Math.round():四舍五入
Math.random():随机数
f. Date对象
new Date();
// "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)” 当前时间
// 参数为时间零点开始计算的毫秒数
new Date(1378218728000)
// Tue Sep 03 2013 22:32:08 GMT+0800 (CST)
// 参数为日期字符串
new Date('January 6, 2013');
// Sun Jan 06 2013 00:00:00 GMT+0800 (CST)
// 参数为多个整数,
// 代表年、月、日、小时、分钟、秒、毫秒
new Date(2013, 0, 1, 0, 0, 0, 0)
// Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
Date.now() // 1364026285194 Unix 时间戳乘以1000
Date.parse() //用来解析日期字符串,返回 Unix 时间戳乘以1000
let d = new Date();
d.valueOf() // 1362790014817
d.getTime() // 1362790014817
d.toString()
// "Tue Jan 01 2013 00:00:00 GMT+0800 (CST)”
d.toUTCString()
// "Mon, 31 Dec 2012 16:00:00 GMT”
d.toUTCString()
// "Mon, 31 Dec 2012 16:00:00 GMT”
d.toJSON()
// “2012-12-31T16:00:00.000Z”
d.toDateString()
// "Tue Jan 01 2013”
d.toTimeString()
// "00:00:00 GMT+0800 (CST)"
d.toLocaleDateString()
// 中文版浏览器为”2013年1月1日"
d.toLocaleTimeString()
// 中文版浏览器为”上午12:00:00"
get类方法:
getTime():返回实例距离1970年1月1日00:00:00的毫秒数,等同于valueOf方法。
getDate():返回实例对象对应每个月的几号(从1开始)。
getDay():返回星期几,星期日为0,星期一为1,以此类推。
getYear():返回距离1900的年数。
getFullYear():返回四位的年份。
getMonth():返回月份(0表示1月,11表示12月)。
getHours():返回小时(0-23)。
getMilliseconds():返回毫秒(0-999)。
getMinutes():返回分钟(0-59)。
getSeconds():返回秒(0-59)。
getTimezoneOffset():返回当前时间与 UTC 的时区差异,以分钟表示,返回结果考虑到了夏令时因素。
set 类方法
setDate(date):设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。
setYear(year): 设置距离1900年的年数。
setFullYear(year [, month, date]):设置四位年份。
setHours(hour [, min, sec, ms]):设置小时(0-23)。
setMilliseconds():设置毫秒(0-999)。
setMinutes(min [, sec, ms]):设置分钟(0-59)。
setMonth(month [, date]):设置月份(0-11)。
setSeconds(sec [, ms]):设置秒(0-59)。
setTime(milliseconds):设置毫秒时间戳。
g. regExp
自行查阅:http://javascript.ruanyifeng.com/stdlib/regexp.html
h. JSON对象
JSON.stringify() 将一个值转为 JSON 字符串
JSON.parse() 将 JSON 字符串转换成对应的值
i. console对象
console.log() 主要用这个打log
console.info()
console.debug()
console.warn()
console.error()
console.assert()
console.time(),console.timeEnd()
console.trace()
占位符:
%s 字符串
%d 整数
%i 整数
%f 浮点数
%o 对象的链接
%c CSS 格式字符串
j. 属性描述对象
自行查阅:http://javascript.ruanyifeng.com/stdlib/attributes.html