目錄
1.什么是標(biāo)準(zhǔn)庫(kù)
2.Object對(duì)象及其實(shí)例
3.Number對(duì)象及其實(shí)例
4.String對(duì)象及其實(shí)例
5.Boolean對(duì)象及其實(shí)例
6.Array對(duì)象及其實(shí)例
7.Math對(duì)象及其實(shí)例
8.Date對(duì)象
9.標(biāo)準(zhǔn)庫(kù)小結(jié)
1.什么是標(biāo)準(zhǔn)庫(kù)(Standard Library)
標(biāo)準(zhǔn)庫(kù)指的是js的標(biāo)準(zhǔn)內(nèi)置對(duì)象梧喷,是js這門語(yǔ)言本身初始時(shí)提供的在全局范圍的對(duì)象
2.Object對(duì)象及其實(shí)例
JavaScript原生提供一個(gè)Object對(duì)象,所有的其他對(duì)象均繼承自這一對(duì)象
- Object對(duì)象的屬性和方法
利用console.dir(Object)查找Object對(duì)象的屬性和方法
常用的屬性或方法簡(jiǎn)介:
1.prototype對(duì)象
prototype是Object對(duì)象下的原型對(duì)象亿胸,
原型對(duì)象里面用于放置其他繼承自O(shè)bject對(duì)象的屬性和方法蜀细,例如:
Object.prototype.valueOf()
Object.prototype.toString()
兩個(gè)方法都是部署在Object對(duì)象下的prototype原型對(duì)象灭美,
而其他對(duì)象如Number對(duì)象拦宣、String對(duì)象
或是自定義對(duì)象var a = new Object()都可以繼承prototype的屬性和方法
2.Object.keys(object)
keys()方法輸入一個(gè)實(shí)例對(duì)象并返回對(duì)象的屬性數(shù)組
3.Object.getOwnPropertyNames
【注】keys方法只返回可枚舉的屬性网缝,getOwnPropertyNames還返回不可枚舉的屬性名懊缺。
4.Object()本身作為方法使用
var a = {name:"teren"}
Object(a)
//傳入一個(gè)對(duì)象實(shí)例返回該實(shí)例
Object {name: "teren"}
//傳入一個(gè)原始類型值疫稿,則返回該值對(duì)應(yīng)的包裝對(duì)象
- Object對(duì)象實(shí)例的屬性和方法
Object對(duì)象本身是一個(gè)構(gòu)造函數(shù),可以利用Object構(gòu)造函數(shù)構(gòu)造對(duì)象實(shí)例
var person = new Object();
person.name = "teren";
//字面量方法
var person = {name: "teren"};
【注】
所有的對(duì)象都是由Object構(gòu)造出來(lái)的鹃两;
字面量創(chuàng)建對(duì)象的方法和利用Object()構(gòu)造對(duì)象的方法是等價(jià)的遗座;
Object對(duì)象有不少方法部署在Object.prototype對(duì)象上,所有的Object的對(duì)象實(shí)例都繼承這些方法
1.Object.prototype.valueOf()
valueOf()方法返回一個(gè)對(duì)象的“值”俊扳。默認(rèn)情況下途蒋,返回對(duì)象本身
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自動(dòng)類型轉(zhuǎn)換時(shí)會(huì)默認(rèn)調(diào)用這個(gè)方法
2.Object.prototype.toString()
toString方法返回一個(gè)對(duì)象的字符串形式馋记,默認(rèn)情況下返回類型字符串
var o ={name:"teren"}
o.toString()//"[object Object]"
【注】
toString方法的主要用于是号坡,JavaScript自動(dòng)類型轉(zhuǎn)換時(shí)會(huì)默認(rèn)調(diào)用這個(gè)方法
var o = {}
o + "world"http://"[object Object]world"
3.hasOwnProperty()
hasOwnProperty():判斷某個(gè)屬性是否為當(dāng)前對(duì)象自身的屬性,還是繼承自原型對(duì)象的屬性,若繼承自原型則返回false
var o = {name:"teren"}
o.hasOwnProperty("name")//true
o.hasOwnProperty("toString")//false
4.propertyIsEnumerable():判斷某個(gè)屬性是否可枚舉(遍歷)
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對(duì)象及其實(shí)例
Number對(duì)象是數(shù)值對(duì)應(yīng)的包裝對(duì)象梯醒,所謂包裝對(duì)象如下面例子所示:
var num = 123//這是一個(gè)數(shù)據(jù)類型為數(shù)值的數(shù)值
var num = new Number(123)//這里通過(guò)Number函數(shù)構(gòu)造一個(gè)對(duì)象宽堆,從而把數(shù)值123包裝進(jìn)Number對(duì)象中
- Number對(duì)象的屬性和方法
1.Number對(duì)象的屬性
Number.MAX_VALUE
Number.MIN_VALUE
Number.POSITIVE_INFINITY
Number.NEGATIVE_INFINITY
Number.NaN
【注】
Number對(duì)象實(shí)例是無(wú)法獲取去Number對(duì)象的屬性
var x = new Number(123);
x.MAX_VALUE;//undefined
2.Number對(duì)象的方法
1.Number()自身的方法
將任何類型的值轉(zhuǎn)化為數(shù)值
Number(100)//100
Number("100")//100
Number("100e")//NaN
Number([1,2,3])//NaN
Number(true)//1
Number([])//0
Number({})//NaN
2.toFixed()
把數(shù)字轉(zhuǎn)換為字符串,并保留幾位小數(shù)
var a = 123
a.toFixed(2)//"123.00"
a.toFixed(3)//"123.000"
a.toFixed(0)//"123"
3.toExponential()
把對(duì)象的值轉(zhuǎn)換為科學(xué)計(jì)數(shù)法的字符串
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對(duì)象繼承自O(shè)bject對(duì)象的屬性和方法茸习,以及專屬于Number的屬性和方法
- Number對(duì)象實(shí)例的屬性和方法
//構(gòu)造Number對(duì)象的實(shí)例
var num = new Number(123)
【注】
Number對(duì)象實(shí)例所運(yùn)用到的屬性和方法基本包含在Number對(duì)象的屬性和方法中
4.String對(duì)象及其實(shí)例
String對(duì)象是字符串的包裝對(duì)象畜隶,利用String()構(gòu)造函數(shù)創(chuàng)建一個(gè)String對(duì)象的實(shí)例
- String對(duì)象的屬性和方法
1.length屬性
返回字符串長(zhǎng)度
var str = "111"
str.length//3
1.String()本身作為方法
能夠?qū)⑵渌愋椭缔D(zhuǎn)換為字符串
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()
提取字符串中兩個(gè)指定的索引號(hào)之間的字符
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()
把字符串分割為字符串?dāng)?shù)組
var s = "hello"
s.split("")//["h", "e", "l", "l", "o"]
var str = "hello world"
str.split(" ")//["hello", "world"]
9.slice(1,5)
從下標(biāo)為1開始(包含元素)至下標(biāo)5(不包含)
var str = "helloworld"
str.slice(1,5)//"ello"
10.valueOf()&toString()
都是返回字符串
- String對(duì)象實(shí)例的屬性和方法
var str = new String("hello world");
//字面量
var str = "hello world"
【注】
String對(duì)象實(shí)例的屬性和方法基本包含在String對(duì)象的屬性與方法中
4.Boolean對(duì)象及其實(shí)例
Boolean對(duì)象是布爾值的包裝對(duì)象,利用Boolean構(gòu)造函數(shù)創(chuàng)建一個(gè)布爾對(duì)象
var a = true;
typeof a//"boolean"
var b = new Boolean (true)
typeof b//"object"
【注】
不鼓勵(lì)使用Boolean()構(gòu)造布爾對(duì)象
6.Array對(duì)象
Array對(duì)象是數(shù)組的包裝對(duì)象
- 創(chuàng)建一個(gè)Array對(duì)象實(shí)例
var array = new Array(1,2,3)
//字面量方法
var arr = [1,2,3]
- Array對(duì)象的屬性
length屬性
var arr= [1,2,3]
arr.length//3
- Array對(duì)象的方法
1.valueOf & toStrng()
valueOf返回?cái)?shù)組對(duì)象原始值
toString()返回字符串
var arr = [1,2,3]
arr.valueOf()//[1, 2, 3]
arr.toString()//"1,2,3"
2.增加數(shù)組元素
arr.push() & arr.unshift()//一個(gè)在尾部一個(gè)在首部增加元素号胚,并返回新數(shù)組的長(zhǎng)度
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.刪除數(shù)組元素
arr.pop() & arr.shift()//一個(gè)在尾部一個(gè)在首部刪除元素籽慢,并返回刪除的元素,每次調(diào)用只能刪一個(gè)
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)
把數(shù)組的所有元素放入一個(gè)字符串。元素通過(guò)指定的分隔符進(jìn)行分隔
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()
合并數(shù)組
var a =[1,3,4]
var b = [4,2,1]
a.concat(b)//[1, 3, 4, 4, 2, 1]
【注】
Array對(duì)象實(shí)例所運(yùn)用到的屬性和方法基本包含在Array對(duì)象的屬性和方法中
7.Math對(duì)象及其實(shí)例
Math對(duì)象提供一些數(shù)學(xué)方面的屬性和方法猫胁,但Math對(duì)象不能創(chuàng)建實(shí)例對(duì)象
- Math對(duì)象的屬性
Math.E
Math.LN2
Math.LN10
Math.PI
Math.SQRT2
- Math對(duì)象的方法
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為底的自然對(duì)數(shù)值
Math.log(Math.E)//1
7.Math.ceil() & Math.floor()
Math.ceil:接受一個(gè)參數(shù)箱亿,返回大于該參數(shù)的最小整數(shù)
Math.floor:接受一個(gè)參數(shù),返回小于該參數(shù)的最大整數(shù)
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之間的一個(gè)偽隨機(jī)數(shù)弃秆,可能等于0极景,但是一定小于1
Math.random()*50+50//[50,100)之間的隨機(jī)數(shù)
10.三角函數(shù)方法
略
11.valueOf() & toString()
valueOf()返回Math對(duì)象的原始值
toString()返回Math的對(duì)象類型
8.Date對(duì)象
Date對(duì)象是JavaScript提供的日期和時(shí)間的操作接口
- Date實(shí)例對(duì)象的參數(shù)
Date對(duì)象的起始時(shí)間為1970年1月1日00:00:00 UTC
new Date()//Tue Jun 21 2016 21:45:31 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
new Date(1000)//Thu Jan 01 1970 08:00:01 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
new Date(3600*24*1000)//Fri Jan 02 1970 08:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
new Date("March 5,2015")//Thu Mar 05 2015 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
new Date("2015/5/5")//Tue May 05 2015 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
new Date(2014,1,1,23,59,23,999)//Sat Feb 01 2014 23:59:23 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
- Date對(duì)象的方法
1.Date()本身作為方法
var today = new Date()
2.Date.now()
返回當(dāng)前距離1970年1月1日 00:00:00 UTC的毫秒數(shù)
Date.now()//1466517135730
3.Date.parse()
用來(lái)解析日期字符串察净,返回距離1970年1月1日 00:00:00的毫秒數(shù)
Date.parse(2015,2,2)//1420070400000
4.Date.UTC()
返回當(dāng)前距離1970年1月1日 00:00:00 UTC的毫秒數(shù)
Date.UTC(2000,0,1)//946684800000
- Date對(duì)象實(shí)例的方法
1.to類:返回關(guān)于時(shí)間和日期的字符串
toString():返回一個(gè)完整的日期字符串
var d = new Date(2000,0,1)
d.toString()//"Sat Jan 01 2000 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)"
--
toUTCString():返回對(duì)應(yīng)的UTC時(shí)間
var d = new Date()
d//Tue Jun 21 2016 22:00:06 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
d.toUTCString()//"Tue, 21 Jun 2016 14:00:06 GMT"
--
toDateString():返回日期字符串
d.toDateString()//"Tue Jun 21 2016"
--
toTimeString():返回時(shí)間字符串
d.toTimeString()//"22:00:06 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)"
2.get類:獲取關(guān)于時(shí)間和日期的值
getTime():返回距離1970年1月1日00:00:00的毫秒數(shù)
var d = new Date(2000,0,1)
d//Sat Jan 01 2000 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
d.getTime()//946656000000
--
getDate():返回實(shí)例對(duì)象對(duì)應(yīng)每個(gè)月的幾號(hào)
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類:設(shè)置實(shí)例對(duì)象的時(shí)間和日期
var d = new Date(2000,0,1)
d.setDate(20)//948297600000
d//Thu Jan 20 2000 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
--
setFullYear()
d.setFullYear(2005)//1106150400000
d//Thu Jan 20 2005 00:00:00 GMT+0800 (中國(guó)標(biāo)準(zhǔn)時(shí)間)
--
setMonths & setHours & setMinutes & setSeconds & setMiliseconds效果同上
【注】
關(guān)于jsDate對(duì)象的時(shí)間和日期的取值范圍
分鐘和秒:0 到 59
小時(shí):0 到 23
星期:0(星期天)到 6(星期六)
日期:1 到 31
月份:0(一月)到 11(十二月)
年份:距離1900年的年數(shù)
10.標(biāo)準(zhǔn)庫(kù)小結(jié)
標(biāo)準(zhǔn)庫(kù)是js的初始提供的標(biāo)準(zhǔn)內(nèi)置對(duì)象,分為Object對(duì)象盼樟、Number對(duì)象氢卡、String對(duì)象、Boolean對(duì)象晨缴、Array對(duì)象译秦、Math對(duì)象以及Date對(duì)象
【注】不限于上述對(duì)象,還有RegExp對(duì)象和JSON對(duì)象js所有的對(duì)象都是由Object對(duì)象構(gòu)造的击碗,包括其對(duì)象實(shí)例以及Number筑悴、String、Boolean稍途、Array阁吝、Math和Date等對(duì)象;
對(duì)象一般都會(huì)包含屬性和方法械拍,屬性代表屬于對(duì)象的某些特征值突勇,方法代表對(duì)象的某些功能;
對(duì)象在屬性當(dāng)中通常設(shè)置constructor(Math對(duì)象沒(méi)有)和prototype屬性坷虑,部分對(duì)象包括length屬性(String和Arrary對(duì)象的length有實(shí)踐意義)甲馋;conStructor設(shè)置該對(duì)象的構(gòu)造函數(shù)功能,prototype設(shè)置一個(gè)原型對(duì)象——使得所有該對(duì)象的構(gòu)造函數(shù)創(chuàng)建的對(duì)象實(shí)例能夠從prototype對(duì)象中繼承相應(yīng)的屬性迄损;
Object對(duì)象的屬性和方法最具一般性定躏,大部分屬性和方法可以在其他對(duì)象中找到,但是每一個(gè)對(duì)象還具有各自的屬性和方法(有些只能對(duì)象使用芹敌,有些能夠?qū)ο髮?shí)例使用(因?yàn)椴渴鹪诟髯詫?duì)象的prototype里))
這里特別說(shuō)一下valueOf()痊远、toString()在不同對(duì)象中的效果,一般valueOf()輸出對(duì)象的原始值氏捞,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對(duì)象是數(shù)值對(duì)應(yīng)的包裝對(duì)象碧聪,String對(duì)象是字符串對(duì)應(yīng)的包裝對(duì)象,Boolean是布爾值對(duì)應(yīng)的包裝對(duì)象
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標(biāo)準(zhǔn)參考教程