JavaScript門道之標準庫

目錄
1.什么是標準庫
2.Object對象及其實例
3.Number對象及其實例
4.String對象及其實例
5.Boolean對象及其實例
6.Array對象及其實例
7.Math對象及其實例
8.Date對象
9.標準庫小結

1.什么是標準庫(Standard Library)

標準庫指的是js的標準內置對象,是js這門語言本身初始時提供的在全局范圍的對象

2.Object對象及其實例

JavaScript原生提供一個Object對象,所有的其他對象均繼承自這一對象

  • Object對象的屬性和方法
    利用console.dir(Object)查找Object對象的屬性和方法

常用的屬性或方法簡介:
1.prototype對象

prototype是Object對象下的原型對象,
原型對象里面用于放置其他繼承自Object對象的屬性和方法,例如:
Object.prototype.valueOf()
Object.prototype.toString()
兩個方法都是部署在Object對象下的prototype原型對象,
而其他對象如Number對象、String對象
或是自定義對象var a = new Object()都可以繼承prototype的屬性和方法

2.Object.keys(object)

keys()方法輸入一個實例對象并返回對象的屬性數組

3.Object.getOwnPropertyNames



【注】keys方法只返回可枚舉的屬性,getOwnPropertyNames還返回不可枚舉的屬性名。

4.Object()本身作為方法使用

var a = {name:"teren"}
Object(a)
//傳入一個對象實例返回該實例
Object {name: "teren"}
//傳入一個原始類型值,則返回該值對應的包裝對象
  • Object對象實例的屬性和方法

Object對象本身是一個構造函數,可以利用Object構造函數構造對象實例

var person = new Object();
person.name = "teren";
//字面量方法
var person = {name: "teren"};

【注】
所有的對象都是由Object構造出來的;
字面量創建對象的方法和利用Object()構造對象的方法是等價的;

Object對象有不少方法部署在Object.prototype對象上,所有的Object的對象實例都繼承這些方法

1.Object.prototype.valueOf()
valueOf()方法返回一個對象的“值”。默認情況下,返回對象本身

var o = {name:"teren"}
o.valueOf()//Object {name: "teren"}
var p = {name:"teren",age:18}
p.valueOf()//Object {name: "teren", age: 18}
var q = {}
q.valueOf()//Object {}

【注】
valueOf方法的主要用途是,JavaScript自動類型轉換時會默認調用這個方法

2.Object.prototype.toString()
toString方法返回一個對象的字符串形式,默認情況下返回類型字符串

var o ={name:"teren"}
o.toString()//"[object Object]"

【注】
toString方法的主要用于是,JavaScript自動類型轉換時會默認調用這個方法

var o = {}
o + "world"http://"[object Object]world"

3.hasOwnProperty()
hasOwnProperty():判斷某個屬性是否為當前對象自身的屬性,還是繼承自原型對象的屬性,若繼承自原型則返回false

var o = {name:"teren"}
o.hasOwnProperty("name")//true
o.hasOwnProperty("toString")//false

4.propertyIsEnumerable():判斷某個屬性是否可枚舉(遍歷)

var arr = [1,2,3]
for(var key in arr){console.log(arr[key])}
1
2
3
arr.propertyIsEnumerable("0")//true
arr.propertyIsEnumerable("length")//false

3.Number對象及其實例

Number對象是數值對應的包裝對象,所謂包裝對象如下面例子所示:

var num = 123//這是一個數據類型為數值的數值
var num = new Number(123)//這里通過Number函數構造一個對象,從而把數值123包裝進Number對象中
  • Number對象的屬性和方法
    1.Number對象的屬性
Number.MAX_VALUE
Number.MIN_VALUE
Number.POSITIVE_INFINITY
Number.NEGATIVE_INFINITY
Number.NaN

【注】
Number對象實例是無法獲取去Number對象的屬性

var x = new Number(123);
x.MAX_VALUE;//undefined

2.Number對象的方法

1.Number()自身的方法
將任何類型的值轉化為數值
Number(100)//100
Number("100")//100
Number("100e")//NaN
Number([1,2,3])//NaN
Number(true)//1
Number([])//0
Number({})//NaN
2.toFixed()
把數字轉換為字符串,并保留幾位小數
var a = 123
a.toFixed(2)//"123.00"
a.toFixed(3)//"123.000"
a.toFixed(0)//"123"
3.toExponential()
把對象的值轉換為科學計數法的字符串
a.toExponential(1)//"1.2e+2"
a.toExponential(2)//"1.23e+2"
a.toExponential(3)//"1.230e+2"
a.toExponential(4)//"1.2300e+2"
4.valueOf()
a.valueOf()//123
5.toString()
a.toString()//"123"
6.isFinite()
Number.isFinite(123)//true
Number.isFinite(NaN)//false
7.isNaN()
Number.isNaN(NaN)//true

下圖是Number對象繼承自Object對象的屬性和方法,以及專屬于Number的屬性和方法


  • Number對象實例的屬性和方法
//構造Number對象的實例
var num = new Number(123)

【注】
Number對象實例所運用到的屬性和方法基本包含在Number對象的屬性和方法中

4.String對象及其實例

String對象是字符串的包裝對象,利用String()構造函數創建一個String對象的實例

  • String對象的屬性和方法
1.length屬性
返回字符串長度
var str = "111"
str.length//3
1.String()本身作為方法
能夠將其他類型值轉換為字符串
String(1)//"1"
String(true)//"true"
String([1,2,3])//"1,2,3"
String([])//""
String({name:"teren"})//"[object Object]"
2.charAt()
返回指定位置的字符
var str = "123"
str.charAt(2)//"3"
3.charCodeAt()
返回在指定的位置的字符的 Unicode 編碼
str.charCodeAt(0)//49
4.indextOf()
返回字符所在的位置
str.indexOf(1)//0
5.substring()
提取字符串中兩個指定的索引號之間的字符
var str = "NBA Basketball "
str.substring(1,3)//"BA"
str.substring(1,5)//"BA B"
6.toUpperCase()&toLowerCase()
var str ="hello"
str.toUpperCase()//"HELLO"
var strr = "HELLO"
strr.toLowerCase()//"hello"
7.trim()
刪除空格
var s = "      str"
s//"      str"
s.trim()//"str"
8.split()
把字符串分割為字符串數組
var s = "hello"
s.split("")//["h", "e", "l", "l", "o"]
var str = "hello world"
str.split(" ")//["hello", "world"]
9.slice(1,5)
從下標為1開始(包含元素)至下標5(不包含)
var str = "helloworld"
str.slice(1,5)//"ello"
10.valueOf()&toString()
都是返回字符串
  • String對象實例的屬性和方法
var str = new String("hello world");
//字面量
var str = "hello world"

【注】
String對象實例的屬性和方法基本包含在String對象的屬性與方法中

4.Boolean對象及其實例
Boolean對象是布爾值的包裝對象,利用Boolean構造函數創建一個布爾對象

var a = true;
typeof a//"boolean"
var b = new Boolean (true)
typeof b//"object"

【注】
不鼓勵使用Boolean()構造布爾對象

6.Array對象

Array對象是數組的包裝對象

  • 創建一個Array對象實例
var array = new Array(1,2,3)
//字面量方法
var arr = [1,2,3]
  • Array對象的屬性
length屬性
var arr= [1,2,3]
arr.length//3
  • Array對象的方法
1.valueOf & toStrng()
valueOf返回數組對象原始值
toString()返回字符串
var arr = [1,2,3]
arr.valueOf()//[1, 2, 3]
arr.toString()//"1,2,3"
2.增加數組元素
arr.push() & arr.unshift()//一個在尾部一個在首部增加元素,并返回新數組的長度
arr.push("h","e","e")//6
arr//[1, 2, 3, "h", "e", "e"]
arr.unshift(1,1,1)//9
arr//[1, 1, 1, 1, 2, 3, "h", "e", "e"]
3.刪除數組元素
arr.pop() & arr.shift()//一個在尾部一個在首部刪除元素,并返回刪除的元素,每次調用只能刪一個
var arr = [1, 1, 1, 1, 2, 3, "h", "e", "e"]
arr.pop()//"e"
arr//[1, 1, 1, 1, 2, 3, "h", "e"]
arr.shift()//1
arr//[1, 1, 1, 2, 3, "h", "e"]
4.靈活刪除增添元素的方法
var arr = [1, 1, 1, 1, 2, 3, "h", "e", "e"]
arr.splice(0,4,"w","y")//[1, 1, 1, 1]
arr//["w", "y", 2, 3, "h", "e", "e"]
5.join(separator)
把數組的所有元素放入一個字符串。元素通過指定的分隔符進行分隔
var arr = [1, 1, 1, 1, 2, 3, "h", "e", "e"]
arr.join("-")//"1-1-1-1-2-3-h-e-e"
6.sort(func)
var arr = [1, 1, 1, 1, 2, 3, "h", "e", "e"]
arr.sort()//[1, 1, 1, 1, 2, 3, "e", "e", "h"]
7.reverse()
var arr = [1, 1, 1, 1, 2, 3, "h", "e", "e"]
arr.reverse()//["e", "e", "h", 3, 2, 1, 1, 1, 1]
8.concat()
合并數組
var a =[1,3,4]
var b = [4,2,1]
a.concat(b)//[1, 3, 4, 4, 2, 1]

【注】
Array對象實例所運用到的屬性和方法基本包含在Array對象的屬性和方法中

7.Math對象及其實例

Math對象提供一些數學方面的屬性和方法,但Math對象不能創建實例對象

  • Math對象的屬性
Math.E
Math.LN2
Math.LN10
Math.PI
Math.SQRT2
  • Math對象的方法
1.Math.abs()
Math.abs(-9)//9
2.Math.max() & Math.min()
Math.max(-1,1,6)//6
Math.min(-1,1,6)//-1
3.Math.pow()
Math.pow(2,3)//8
4.Math.exp()
Math.exp(2)//7.3890560989306495
5.Math.sqrt()
Math.sqrt(3)//1.7320508075688772
6.Math.log()
返回以e為底的自然對數值
Math.log(Math.E)//1
7.Math.ceil() & Math.floor()
Math.ceil:接受一個參數,返回大于該參數的最小整數
Math.floor:接受一個參數,返回小于該參數的最大整數
Math.ceil(1.1)//2
Math.floor(1.1)//1
8.Math.round()
用于四舍五入
Math.round(0.1)//0
Math.round(0.5)//1
Math.round(-1.5)//-1
Math.round(-1.6)//2
9.Math.random()
返回0到1之間的一個偽隨機數,可能等于0,但是一定小于1
Math.random()*50+50//[50,100)之間的隨機數
10.三角函數方法
略
11.valueOf() & toString()
valueOf()返回Math對象的原始值
toString()返回Math的對象類型

8.Date對象

Date對象是JavaScript提供的日期和時間的操作接口

  • Date實例對象的參數
    Date對象的起始時間為1970年1月1日00:00:00 UTC
new Date()//Tue Jun 21 2016 21:45:31 GMT+0800 (中國標準時間)
new Date(1000)//Thu Jan 01 1970 08:00:01 GMT+0800 (中國標準時間)
new Date(3600*24*1000)//Fri Jan 02 1970 08:00:00 GMT+0800 (中國標準時間)
new Date("March 5,2015")//Thu Mar 05 2015 00:00:00 GMT+0800 (中國標準時間)
new Date("2015/5/5")//Tue May 05 2015 00:00:00 GMT+0800 (中國標準時間)
new Date(2014,1,1,23,59,23,999)//Sat Feb 01 2014 23:59:23 GMT+0800 (中國標準時間)
  • Date對象的方法
1.Date()本身作為方法
var today = new Date()
2.Date.now()
返回當前距離1970年1月1日 00:00:00 UTC的毫秒數
Date.now()//1466517135730
3.Date.parse()
用來解析日期字符串,返回距離1970年1月1日 00:00:00的毫秒數
Date.parse(2015,2,2)//1420070400000
4.Date.UTC()
返回當前距離1970年1月1日 00:00:00 UTC的毫秒數
Date.UTC(2000,0,1)//946684800000
  • Date對象實例的方法
1.to類:返回關于時間和日期的字符串
toString():返回一個完整的日期字符串
var d = new Date(2000,0,1)
d.toString()//"Sat Jan 01 2000 00:00:00 GMT+0800 (中國標準時間)"
--
toUTCString():返回對應的UTC時間
var d = new Date()
d//Tue Jun 21 2016 22:00:06 GMT+0800 (中國標準時間)
d.toUTCString()//"Tue, 21 Jun 2016 14:00:06 GMT"
--
toDateString():返回日期字符串
d.toDateString()//"Tue Jun 21 2016"
--
toTimeString():返回時間字符串
d.toTimeString()//"22:00:06 GMT+0800 (中國標準時間)"
2.get類:獲取關于時間和日期的值
getTime():返回距離1970年1月1日00:00:00的毫秒數
var d = new Date(2000,0,1)
d//Sat Jan 01 2000 00:00:00 GMT+0800 (中國標準時間)
d.getTime()//946656000000
--
getDate():返回實例對象對應每個月的幾號
d.getDate()//1
--
getDay():返回星期幾
d.getDay()//6
--
getFullYear():返回四位的年份
d.getFullYear()//2000
--
getMonth() & getHours() & getMinutes & getSeconds & getMilliseconds
d.getHours()//0
d.getMinutes()//0
d.getSeconds()//0
d.getMilliseconds()//0
3.set類:設置實例對象的時間和日期
var d = new Date(2000,0,1)
d.setDate(20)//948297600000
d//Thu Jan 20 2000 00:00:00 GMT+0800 (中國標準時間)
--
setFullYear()
d.setFullYear(2005)//1106150400000
d//Thu Jan 20 2005 00:00:00 GMT+0800 (中國標準時間)
--
setMonths & setHours & setMinutes  & setSeconds & setMiliseconds效果同上

【注】
關于jsDate對象的時間和日期的取值范圍

分鐘和秒:0 到 59
小時:0 到 23
星期:0(星期天)到 6(星期六)
日期:1 到 31
月份:0(一月)到 11(十二月)
年份:距離1900年的年數

10.標準庫小結

  • 標準庫是js的初始提供的標準內置對象,分為Object對象、Number對象、String對象、Boolean對象、Array對象、Math對象以及Date對象
    【注】不限于上述對象,還有RegExp對象和JSON對象

  • js所有的對象都是由Object對象構造的,包括其對象實例以及Number、String、Boolean、Array、Math和Date等對象;

  • 對象一般都會包含屬性和方法,屬性代表屬于對象的某些特征值,方法代表對象的某些功能;

  • 對象在屬性當中通常設置constructor(Math對象沒有)和prototype屬性,部分對象包括length屬性(String和Arrary對象的length有實踐意義);conStructor設置該對象的構造函數功能,prototype設置一個原型對象——使得所有該對象的構造函數創建的對象實例能夠從prototype對象中繼承相應的屬性;

  • Object對象的屬性和方法最具一般性,大部分屬性和方法可以在其他對象中找到,但是每一個對象還具有各自的屬性和方法(有些只能對象使用,有些能夠對象實例使用(因為部署在各自對象的prototype里))

  • 這里特別說一下valueOf()、toString()在不同對象中的效果,一般valueOf()輸出對象的原始值,toString()輸出字符串

var o = new Object(123)
var o1 = new Object("123)
o.valueOf()//123
o.toString()//"123"
o1.valueOf()//"123"
o1.toString()//"123"
var o2 = [1,2,3]
o2.valueOf()//[1, 2, 3]
o2.toString()//"1,2,3"
var o3 = {name:"teren",age:18}
o3.valueOf()//Object {name: "teren", age: 18}
o3.toString()//"[object Object]"
  • Number對象是數值對應的包裝對象,String對象是字符串對應的包裝對象,Boolean是布爾值對應的包裝對象
var num = 123//type of num -> "number"
var num = new Number(123) //type of num -> "object"
var str = "hello" 
var str = new String("hello")
var bool = true;
var bool = new Boolean(true)

【注】本筆記的資料大部分參考阮一峰的JavaScript標準參考教程

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容

  • 目錄: 1.什么是標準庫 2.Object對象及其實例 3.Number對象及其實例 4.string對象及其對象...
    love2013閱讀 551評論 0 0
  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,079評論 6 13
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,264評論 0 4
  • 參考基礎教程的整理,方便記憶 一、Object對象 (O大寫) 所有其他對象都繼承自這個對象。Object本身也是...
    Viaphlyn閱讀 2,346評論 0 0
  • 我一直都很羨慕“從前,車馬很慢,郵件很遠,一聲只愛一個人”這樣子的生活,如今快節奏的時代,QQ、微信大大縮短了信息...
    北風殷殷閱讀 502評論 7 3