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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,682评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,277评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,083评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,763评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,785评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,624评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,358评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,261评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,722评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,900评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,030评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,737评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,360评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,941评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,057评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,237评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,976评论 2 355

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,149评论 0 13
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,208评论 0 3
  • 参考基础教程的整理,方便记忆 一、Object对象 (O大写) 所有其他对象都继承自这个对象。Object本身也是...
    Viaphlyn阅读 2,325评论 0 0
  • 火车冲破夜幕,掠过秋天的城中村 带走的是光怪陆离的夜市以及 散发霉味的街边菜市场 我走过九个秋天,邂逅九片枫叶 季...
    阿亮的月亮阅读 407评论 8 14
  • 第一章 -“舒莉!舒莉!” “醒醒……”- “啊呀——”在郊外豪华的别墅里,舒莉躺在床上,大口大口的喘着粗气。 “...
    浅听微凉雨阅读 433评论 0 2