ES6 语法基础2--标准库

2018-08-02  本文已影响12人  Realank

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

上一篇下一篇

猜你喜欢

热点阅读