4. 標準庫
a. Object對象
JavaScript 原生提供Object對象
JavaScript 的所有其他對象都繼承自O(shè)bject對象憔辫,即那些對象都是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() 接受一個字符串作為參數(shù)烦租,返回一個布爾值豺鼻,表示該實例對象自身是否具有該屬性
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 返回數(shù)組長度
a // ['x', 2]
連接移動
['a',, 'b'].join('-')
// ‘a(chǎn)--b'
['hello'].concat(['world'], ['!'])
// ["hello", "world", “!"]
let a = ['a', 'b', 'c'];
a.reverse() // ["c", "b", “a"] 原地修改
a.slice(1, 2) // [“b"] 不修改原數(shù)組
let a = ['a', 'b', 'c', 'd', 'e', 'f'];
a.splice(4, 2) // ["e", “f"] 提取并修改原數(shù)組
排序
[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() ****將數(shù)組的所有成員依次傳入?yún)?shù)函數(shù)沫勿,然后把每一次的執(zhí)行結(jié)果組成一個新數(shù)組返回:
let numbers = [1, 2, 3];
numbers.map(function (n) {
return n + 1;
});
// 返回[2, 3, 4] 挨约,不影響原數(shù)組
forEach() 與map方法很相似,但是參數(shù)方法不返回值产雹,只用于遍歷數(shù)組
function log(element, index, array) {
console.log('[' + index + '] = ' + element);
}
[2, 5, 9].forEach(log);
// [0] = 2
// [1] = 5
// [2] = 9
filter()用于過濾數(shù)組成員烫罩,滿足條件的成員組成一個新數(shù)組返回
[1, 2, 3, 4, 5].filter(function (elem) {
return (elem > 3);
})
// [4, 5]
reduce方法和reduceRight****方法依次處理數(shù)組的每個成員,最終累計為一個值洽故。
它們的差別是,reduce是從左到右處理盗誊,reduceRight則是從右到左时甚,其他完全一樣
indexOf方法返回給定元素在數(shù)組中第一次出現(xiàn)的位置隘弊,如果沒有出現(xiàn)則返回-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" 將一個數(shù)轉(zhuǎn)為指定位數(shù)的小數(shù),然后返回這個小數(shù)對應(yīng)的字符串
(10).toExponential() // “1e+1" 將一個數(shù)轉(zhuǎn)為科學(xué)計數(shù)法形式
(12.34).toPrecision(3) // “12.3" 將一個數(shù)轉(zhuǎn)為指定位數(shù)的有效數(shù)字(用于四舍五入時不太可靠荒适,跟浮點數(shù)不是精確儲存有關(guān))
自定義方法
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:常數(shù) Pi
Math.abs():絕對值
Math.ceil():向上取整
Math.floor():向下取整
Math.max():最大值
Math.min():最小值
Math.pow():指數(shù)運算
Math.sqrt():平方根
Math.log():自然對數(shù)
Math.exp():e的指數(shù)
Math.round():四舍五入
Math.random():隨機數(shù)
f. Date對象
new Date();
// "Tue Dec 01 2015 09:34:43 GMT+0800 (CST)” 當(dāng)前時間
// 參數(shù)為時間零點開始計算的毫秒數(shù)
new Date(1378218728000)
// Tue Sep 03 2013 22:32:08 GMT+0800 (CST)
// 參數(shù)為日期字符串
new Date('January 6, 2013');
// Sun Jan 06 2013 00:00:00 GMT+0800 (CST)
// 參數(shù)為多個整數(shù)梨熙,
// 代表年、月刀诬、日咽扇、小時、分鐘陕壹、秒质欲、毫秒
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的毫秒數(shù)糠馆,等同于valueOf方法嘶伟。
getDate():返回實例對象對應(yīng)每個月的幾號(從1開始)。
getDay():返回星期幾又碌,星期日為0九昧,星期一為1,以此類推毕匀。
getYear():返回距離1900的年數(shù)铸鹰。
getFullYear():返回四位的年份。
getMonth():返回月份(0表示1月皂岔,11表示12月)蹋笼。
getHours():返回小時(0-23)。
getMilliseconds():返回毫秒(0-999)凤薛。
getMinutes():返回分鐘(0-59)姓建。
getSeconds():返回秒(0-59)。
getTimezoneOffset():返回當(dāng)前時間與 UTC 的時區(qū)差異缤苫,以分鐘表示速兔,返回結(jié)果考慮到了夏令時因素。
set 類方法
setDate(date):設(shè)置實例對象對應(yīng)的每個月的幾號(1-31)活玲,返回改變后毫秒時間戳涣狗。
setYear(year): 設(shè)置距離1900年的年數(shù)。
setFullYear(year [, month, date]):設(shè)置四位年份舒憾。
setHours(hour [, min, sec, ms]):設(shè)置小時(0-23)镀钓。
setMilliseconds():設(shè)置毫秒(0-999)。
setMinutes(min [, sec, ms]):設(shè)置分鐘(0-59)镀迂。
setMonth(month [, date]):設(shè)置月份(0-11)丁溅。
setSeconds(sec [, ms]):設(shè)置秒(0-59)。
setTime(milliseconds):設(shè)置毫秒時間戳探遵。
g. regExp
自行查閱:http://javascript.ruanyifeng.com/stdlib/regexp.html
h. JSON對象
JSON.stringify() 將一個值轉(zhuǎn)為 JSON 字符串
JSON.parse() 將 JSON 字符串轉(zhuǎn)換成對應(yīng)的值
i. console對象
console.log() 主要用這個打log
console.info()
console.debug()
console.warn()
console.error()
console.assert()
console.time()窟赏,console.timeEnd()
console.trace()
占位符:
%s 字符串
%d 整數(shù)
%i 整數(shù)
%f 浮點數(shù)
%o 對象的鏈接
%c CSS 格式字符串
j. 屬性描述對象
自行查閱:http://javascript.ruanyifeng.com/stdlib/attributes.html