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")//trueo.hasOwnProperty("toString")//false
4.propertyIsEnumerable():判斷某個屬性是否可枚舉(遍歷)
var arr = [1,2,3]for(var key in arr){console.log(arr[key])}123arr.propertyIsEnumerable("0")//truearr.propertyIsEnumerable("length")//false
3.Number對象及其實例Number對象是數值對應的包裝
對象,所謂包裝對象如下面例子所示:
var num = 123//這是一個數據類型為數值的數值var num = new Number(123)//這里通過Number函數構造一個對象,從而把數值123包裝進Number對象中
Number對象的屬性和方法
1.Number對象的屬性
Number.MAX_VALUENumber.MIN_VALUENumber.POSITIVE_INFINITYNumber.NEGATIVE_INFINITYNumber.NaN
【注】
Number對象實例是無法獲取去Number對象的屬性
var x = new Number(123);x.MAX_VALUE;//undefined
2.Number對象的方法
1.Number()自身的方法將任何類型的值轉化為數值Number(100)//100Number("100")//100Number("100e")//NaNNumber([1,2,3])//NaNNumber(true)//1Number([])//0Number({})//NaN2.toFixed()把數字轉換為字符串,并保留幾位小數var a = 123a.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()//1235.toString()a.toString()//"123"6.isFinite()Number.isFinite(123)//trueNumber.isFinite(NaN)//false7.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)//494.indextOf()返回字符所在的位置str.indexOf(1)//05.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")//6arr//[1, 2, 3, "h", "e", "e"]arr.unshift(1,1,1)//9arr//[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()//1arr//[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.EMath.LN2Math.LN10Math.PIMath.SQRT2
Math對象的方法
1.Math.abs()Math.abs(-9)//92.Math.max() & Math.min()Math.max(-1,1,6)//6Math.min(-1,1,6)//-13.Math.pow()Math.pow(2,3)//84.Math.exp()Math.exp(2)//7.38905609893064955.Math.sqrt()Math.sqrt(3)//1.73205080756887726.Math.log()返回以e為底的自然對數值Math.log(Math.E)//17.Math.ceil() & Math.floor()Math.ceil:接受一個參數,返回大于該參數的最小整數Math.floor:接受一個參數,返回小于該參數的最大整數Math.ceil(1.1)//2Math.floor(1.1)//18.Math.round()用于四舍五入Math.round(0.1)//0Math.round(0.5)//1Math.round(-1.5)//-1Math.round(-1.6)//29.Math.random()返回0到1之間的一個偽隨機數,可能等于0,但是一定小于1Math.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()//14665171357303.Date.parse()用來解析日期字符串,返回距離1970年1月1日 00:00:00的毫秒數Date.parse(2015,2,2)//14200704000004.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 & getMillisecondsd.getHours()//0d.getMinutes()//0d.getSeconds()//0d.getMilliseconds()//0
3.set類:設置實例對象的時間和日期
var d = new Date(2000,0,1)d.setDate(20)//948297600000d//Thu Jan 20 2000 00:00:00 GMT+0800 (中國標準時間)--setFullYear()d.setFullYear(2005)//1106150400000d//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()//123o.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標準參考教程
新聞熱點
疑難解答