JavaScript學習筆記之對象
目錄
- 1、自定義對象
- 2、Array
- 3、Boolean
- 4、Date
- 5、Math
- 6、Number
- 7、String
- 8、RegExp
- 9、Function
- 10、Event
在 JavaScript 中一切皆對象,包括數字、字符串、函數等等,此外,JavaScript 還允許自定義對象
1、自定義對象
(1)定義對象
JavaScript 是面向對象的語言,但 JavaScript 不使用類
JavaScript 除了可以使用內置對象,還允許通過函數來定義對象
function person(firstName,lastName) { this.firstName = firstName; this.lastName = lastName; this.setName = setName; function setName(firstName,lastName) { this.firstName = firstName; this.lastName = lastName; } }
(2)創建對象
var obj = new person("Bill","Gates");
(3)訪問屬性和方法
obj.setName("Steve","Jobs")
document.write(obj.firstName + " " + obj.lastName + "<br />");
// Steve Jobs
(4)添加屬性
obj.age = 50;
document.write(obj.age + "<br />");
// 50
(5)遍歷屬性
for (x in obj) { document.write(x + " "); } // firstName lastName setName age
以下是 JavaScript 中常用的內建對象
2、Array
Array 對象用於在單個變量中存儲多個值
可以使用以下語句創建 Array 對象:
var myArray = new Array();
var myArray = new Array(size);
// 參數 size 是期望的元素個數
var myArray = new Array(element0, element1, ..., elementn);
// 參數 element0 ..., elementn 是初始元素列表
(1)屬性
- constructor:對創建對象的函數的引用
var test = new Array();
if (test.constructor==Array) {document.write("This is an Array");}
if (test.constructor==Boolean) {document.write("This is a Boolean");}
if (test.constructor==Date) {document.write("This is a Date");}
// This is an Array
document.write(test.constructor);
// function Array() { [native code] }
- length:數組中元素的數目
(2)方法
添加或刪除元素
concat(array1, ...... ,arrayX):連接數組,並返回結果
- pop():刪除並返回數組的最後一個元素
- push(element1, .... ,elementX):向數組的末尾添加一個或更多元素,並返回新的長度
- shift():刪除並返回數組的第一個元素,直接修改原有對象
unshift(element1, .... ,elementX):向數組的開頭添加一個或更多元素,並返回新的長度,直接修改原有對象
splice(index,howmany,element1,.....,elementX):添加/刪除元素,返回被刪除的元素,index 指定初始位置,howmany 指定數量,element1,.....,elementX 指定向數組添加的新元素
var arr = new Array("A","B","C","D","E","F");
arr.splice(1,4,"T");
document.write(arr);
// A,T,F
工具
- slice(start,end):類似於 Python 中的切片操作,用於創建副本,在原數組上進行操作
var arr = new Array("1","2","3","4","5");
document.write(arr.slice(1,4));
// 2,3,4
- reverse():數組反轉
var arr = new Array("5","4","3","2","1");
arr.reverse();
document.write(arr);
// 1,2,3,4,5
- sort(sortby):數組排序,在原數組上進行操作,sortby 是用於指定排序規則的函數,它接受兩個參數,返回一個用於說明兩個參數相對順序的數字,默認是按字符編碼進行排序
function sortNumber(a, b){return a - b;}
var arr = new Array("5","1","4","2","3");
arr.sort(sortNumber);
document.write(arr);
// 1,2,3,4,5
- join(separator):把數組所有元素放入一個字符串,並通過 separator 指定分隔符進行分隔,默認為逗號
var arr = new Array("A","B","C");
document.write(arr.join());
// A,B,C
轉換成字符串
- toString():把數組轉換為字符串,並返回結果
- toLocaleString():根據本地時間格式把數組轉換為字符串,並返回結果
其它
- toSource():返回 Array 對象的源代碼
- valueOf():返回 Array 對象的原始值
3、Boolean
Boolean 對象用於表示兩個 "true" 或 "false"
可以使用以下語句創建 Boolean 對象:
new Boolean(value); //構造函數
Boolean(value); //轉換函數
(1)屬性
- constructor:對創建對象的函數的引用
(2)方法
轉換成字符串
- toString():把邏輯值轉換為字符串,並返回結果
其它
- toSource():返回 Boolean 對象的源代碼
- valueOf():返回 Boolean 對象的原始值
4、Date
Date 對象用於處理日期和時間
可以使用以下語句創建 Date 對象:
var myDate = new Date()
// Date 對象會自動把當前日期和時間作為初始值
(1)屬性
- constructor:對創建對象的函數的引用
(2)方法
- Date():返回當前的日期和時間
document.write(Date())
// Fri Feb 15 2019 23:00:00 GMT+0800 (中國標準時間)
返回時間
- getFullYear():返回 Date 對象的年份(4 位數字)
- getMonth():返回 Date 對象的月份(0 ~ 11)
- getDate():返回 Date 對象的日期(1 ~ 31)
- getDay():返回 Date 對象的星期(0 ~ 6)
- getHours():返回 Date 對象的小時(0 ~ 23)
- getMinutes():返回 Date 對象的分鐘(0 ~ 59)
- getSeconds():返回 Date 對象的秒數(0 ~ 59)
- getMilliseconds():返回 Date 對象的毫秒(0 ~ 999)
根據世界時返回時間
- getUTCFullYear():根據世界時返回 Date 對象的年份(4 位數字)
- getUTCMonth():根據世界時返回 Date 對象的月份(0 ~ 11)
- getUTCDate():根據世界時返回 Date 對象的日期(1 ~ 31)
- getUTCDay():根據世界時返回 Date 對象的星期(0 ~ 6)
- getUTCHours():根據世界時返回 Date 對象的小時(0 ~ 23)
- getUTCMinutes():根據世界時返回 Date 對象的分鐘(0 ~ 59)
- getUTCSeconds():根據世界時返回 Date 對象的秒數(0 ~ 59)
- getUTCMilliseconds():根據世界時返回 Date 對象的毫秒(0 ~ 999)
設置時間
- setFullYear(year,month,day):設置 Date 對象的年份(4 位數字)
- setMonth(month,day):設置 Date 對象的月份(0 ~ 11)
- setDate(day):設置 Date 對象的日期(1 ~ 31)
- setHours(hour,min,sec,millisec):設置 Date 對象的小時(0 ~ 23)
- setMinutes(min,sec,millisec):設置 Date 對象的分鐘(0 ~ 59)
- setSeconds(sec,millisec):設置 Date 對象的秒數(0 ~ 59)
- setMilliseconds(millisec):設置 Date 對象的毫秒(0 ~ 999)
根據世界時設置時間
- setUTCFullYear(year,month,day):根據世界時設置 Date 對象的年份(4 位數字)
- setUTCMonth(month,day):根據世界時設置 Date 對象的月份(0 ~ 11)
- setUTCDate(day):根據世界時設置 Date 對象的日期(1 ~ 31)
- setUTCHours(hour,min,sec,millisec):根據世界時設置 Date 對象的小時(0 ~ 23)
- setUTCMinutes(min,sec,millisec):根據世界時設置 Date 對象的分鐘(0 ~ 59)
- setUTCSeconds(sec,millisec):根據世界時設置 Date 對象的秒數(0 ~ 59)
- setUTCMilliseconds(millisec):根據世界時設置 Date 對象的毫秒(0 ~ 999)
返回毫秒數與分鐘差
- getTime():返回 1970 年 1 月 1 日至今的毫秒數
- UTC():根據世界時返回 1970 年 1 月 1 日 到指定日期的毫秒數
- parse():返回 1970 年 1 月 1 日午夜到指定日期的毫秒數
- getTimezoneOffset():返回本地時間與格林威治標準時間的分鐘差
轉換成字符串
- toString():把 Date 對象轉換為字符串
var d = new Date()
document.write (d.toString())
// Fri Feb 15 2019 23:00:00 GMT+0800 (中國標準時間)
- toTimeString():把 Date 對象的時間部分轉換為字符串
- toDateString():把 Date 對象的日期部分轉換為字符串
- toUTCString():根據世界時把 Date 對象轉換為字符串
var d = new Date()
document.write (d.toUTCString())
// Fri, 15 Feb 2019 15:00:00 GMT
- toLocaleString():根據本地時間格式把 Date 對象轉換為字符串
var d = new Date()
document.write (d.toUTCString())
// 2019/2/15 下午11:00:00
- toLocaleTimeString():根據本地時間格式把 Date 對象的時間部分轉換為字符串
- toLocaleDateString():根據本地時間格式把 Date 對象的日期部分轉換為字符串
其它
- toSource():返回 Date 對象的源代碼
- valueOf():返回 Date 對象的原始值
5、Math
Math 對象用於執行數學任務
註意,Math 對象沒有構造函數,它的屬性和方法不是某個具體對象的方法
(1)屬性
- PI:圓周率
document.write(Math.PI);
// 3.141592653589793
- E:自然對數的底數
document.write(Math.E);
// 2.718281828459045
- LN2:以 e 為底的 2 的對數
document.write(Math.LN2);
// 0.6931471805599453
- LN10:以 e 為底的 10 的對數
document.write(Math.LN10);
// 2.302585092994046
- LOG2E:以 2 為底的 e 的對數
document.write(Math.LOG2E);
// 1.4426950408889634
- LOG10E:以 10 為底的 e 的對數
document.write(Math.LOG10E);
// 0.4342944819032518
- SQRT2:2 的平方根
document.write(Math.SQRT2);
// 1.4142135623730951
- SQRT1_2:2 的平方根的倒數
document.write(Math.SQRT1_2);
// 0.7071067811865476
(2)方法
一般
- abs(x):絕對值
- ceil(x):上取整
- floor(x):下取整
- round(x):四舍五入取整
- max(x,y):最大值
- min(x,y):最小值
- random():隨機數
指數、對數、冪函數
- exp(x):指數值
- log(x):對數值
- pow(x,y):冪值
- sqrt(x):平方根
三角函數
- sin(x):正弦值
- cos(x):余弦值
- tan(x):正切值
- asin(x):反正弦值
- acos(x):反余弦值
- atan(x):反正切值
其它
- toSource():返回 Date 對象的源代碼
- valueOf():返回 Date 對象的原始值
6、Number
在 JavaScript 中只有一種數字類型,它將所有數字儲存為 64 位的浮點數
整數(不適用小數或指數計數法)的精度為 15 位,小數的精度為 17 位
若數字的前綴為 0,則 JavaScript 將其解釋為八進制數;若前綴為 0x,則解釋為十六進制數
可以使用以下語句創建 Number 對象:
new Number(value); //構造函數
Number(value); //轉換函數
(1)屬性
constructor:對創建對象的函數的引用
MAX_VALUE:可表示的最大的數
document.write(Number.MAX_VALUE);
// 1.7976931348623157e+308
- MIN_VALUE :可表示的最小的數
document.write(Number.MIN_VALUE);
// 5e-324
- POSITIVE_INFINITY:特殊值,表示正無窮大
var x = Number.MAX_VALUE * 2;
if (x == Number.POSITIVE_INFINITY) { document.write(x); }
// Infinity
- NEGATIVE_INFINITY:特殊值,表示負無窮大
var x = -Number.MAX_VALUE * 2;
if (x == Number.NEGATIVE_INFINITY) { document.write(x); }
// -Infinity
- NaN:特殊值,表示非數字值,NaN 與所有值都不相等,包括它自己,但是可以用 isNaN 判斷
var x = Number.NaN;
if (isNaN(x)) { document.write(x); }
// NaN
(2)方法
轉換成不同格式的數字
- toFixed(num):將 Number 對象四舍五入為指定小數位數的數字,num 用於指定小數位數,默認為 0,範圍為 0 ~ 20
var number = new Number(12.34);
document.write(number.toFixed(1))
// 12.3
- toExponential(num):將 Number 對象轉換為使用指數計數法的數字,num 用於指定小數位數,默認為使用盡可能多的數字,範圍為 0 ~ 20
var number = new Number(123.4);
document.write(number.toExponential(1))
// 1.2e+2
- toPrecision(num):可在對象的值超出指定位數時將其轉換為指數計數法,num 用於指定指數計數法的最小位數,默認為調用方法 toString(),範圍為 1 ~ 21
轉換成字符串
- toString(radix):將數字轉換為字符串,radix 用於指定數字基數,默認為 10,範圍為 2 ~ 36
var number = new Number(1234);
document.write(number.toString(2))
// 10011010010
- toLocaleString():將數字轉換為本地格式的字符串,根據本地規範進行格式化
其它
- valueOf():返回 Number 對象的基本數字值,通常在需要時後臺將進行自動調用
7、String
String 對象用於處理文本
JavaScript 中的字符串是不可變的類型,String 類定義的方法都不能改變字符串的內容,它們返回全新的字符串,而非修改原始的字符串
可以使用以下語句創建 String 對象:
new String(value); //構造函數
String(value); //轉換函數
(1)屬性
- constructor:對創建對象的函數的引用
- length:返回字符串的字符數目
(2)方法
格式控制
- big():大號字符串
- small():小號字符串
- bold():粗體字符串
- italics():斜體字符串
- blink():閃動字符串
- strike():刪除線
- sub():下標
- sup():上標
- fontcolor(color):字體顏色
- fontsize(size):字體大小
- fixed():打字機文本
- anchor(anchorname):創建錨
var str = "Hello world";
document.write(str.anchor("myAnchor"));
- link(url):將字符串顯示為鏈接
var str = "Hello world";
document.write(str.link("URL"));
大小寫
- toLowerCase():把字符串轉換為小寫
toUpperCase():把字符串轉換為大寫
- toLocaleLowerCase():按照本地方式把字符串轉換為小寫
toLocaleUpperCase():按照本地方式把字符串轉換為大寫
字符
- charAt():返回指定位置的字符
- charCodeAt():返回指定位置的字符的 Unicode 編碼
- fromCharCode(Unicode1, ... ,UnicodeX):從字符編碼創建一個字符串
document.write(String.fromCharCode(72,69,76,76,79))
// HELLO
工具
- indexOf(searchvalue,fromindex):檢索字符串,searchvalue 定義需要檢索的字符串值,fromindex 定義在字符串中開始檢索的位置,默認為 0
- lastIndexOf(searchvalue,fromindex):從後向前檢索字符串,searchvalue 定義需要檢索的字符串值,fromindex 定義在字符串中開始檢索的位置,默認為 length - 1
- search(regexp/substr):根據正則表達式/子字符串檢索字符串,返回匹配的位置
- match(regexp/substr):根據正則表達式/子字符串檢索字符串,返回指定的值
- replace(regexp/substr,replacement):根據正則表達式/子字符串的匹配結果替換字符串
- localeCompare(target):根據本地排序規則與 target 字符串進行比較
- split(separator,howmany):把字符串分割為字符串數組,separator 指定分隔符,howmany 指定返回數組的最大長度
- slice(start,end):類似於 Python 中的切片操作,用於創建副本
- substr(start,length):返回從 start 下標開始的長度為 length 的子字符串
- substring(start,stop):返回從 start 下標開始至 stop 下標結束的子字符串
轉換成字符串
- toString():返回字符串
其它
- toSource():返回 String 對象的源代碼
- valueOf():返回 String 對象的原始值
8、RegExp
RegExp 對象表示正則表達式,它是對字符串執行模式匹配的強大工具
可以使用以下語句創建 RegExp 對象:
new RegExp(pattern, attributes);
pattern 是一個字符串,用於指定正則表達式的模式
attributes 是一個可選的字符串,用於指定正則表達式的標誌
- 若為 "g",則指定全局匹配
- 若為 "i",則指定區分大小寫
- 若為 "m",則指定多行匹配
(1)屬性
- global:是否具有標誌 g
- ignoreCase:是否具有標誌 i
- multiline:是否具有標誌 m
- lastIndex:開始下一次匹配的字符位置
- source:正則表達式的源文本
(2)方法
- compile():編譯正則表達式
- exec(string):檢索字符串中的正則表達式的匹配,返回找到的值,並確定其位置
var str = "abcdcbabcdcba";
var patt1 = new RegExp("a");
var result = patt1.exec(str);
document.write(result);
// a
- test(string):檢測一個字符串是否匹配某個模式,返回 true 或 false
var str = "abcdcbabcdcba";
var patt1 = new RegExp("a");
var result = patt1.test(str);
document.write(result);
// true
9、Function
全局屬性和函數可用於所有內建的 JavaScript 對象
(1)全局屬性
- Infinity:正無窮大
- NaN:特殊值,非數字值
- undefined:未定義的值
- Packages:根 JavaPackage 對象
- java:java.* 包層級的一個 JavaPackage
(2)全局函數
編碼解碼
decodeURI(URIstring):解碼某個編碼的 URI
- decodeURIComponent(URIstring):解碼一個編碼的 URI 組件
- encodeURI(URIstring):把字符串編碼為 URI
- encodeURIComponent(URIstring):把字符串編碼為 URI 組件
escape(string):對字符串進行編碼
document.write(escape("Hello World!"));
// Hello%20World%21
- unescape(string):對由 escape() 編碼的字符串進行解碼
數值檢查
- isFinite():檢查某個值是否為有窮大
- isNaN():檢查某個值是否為數字
對象轉換
- Number(object):把對象的值轉換為數字
- String(object):把對象的值轉換為字符串
- parseInt(string, radix):解析字符串,並返回整數
- parseFloat(string):解析字符串,並返回浮點數
其它
- eval(string):將 string 作為腳本執行
- getClass(object):返回一個 JavaObject 的 JavaClass
10、Event
事件通常與函數配合使用,通過事件驅動函數執行,以下屬性可插入 HTML 標簽來定義事件動作
鼠標
- onclick:鼠標點擊
- ondblclick:鼠標雙擊
- onmousedown:鼠標按鍵被按下
- onmouseup:鼠標按鍵被松開
- onmousemove:鼠標被移動
- onmouseout:鼠標從某元素移開
- onmouseover:鼠標移到某元素上
鍵盤
- onkeydown:鍵盤按鍵被按下
- onkeyup:鍵盤的鍵被松
- onkeypress:鍵盤按鍵被按下或按住
加載
- onload:加載文檔或圖像
- onunload:退出頁面
- onerror:加載文檔或圖像時發生錯誤
- onabort:加載圖像時被中斷
其它
- onfocus:獲得焦點
- onblur:失去焦點
- onselect:文本被選定
- onsubmit:提交按鈕被點擊
- onchange:用戶改變域的內容
- onreset:重置按鈕被點擊
- onresize:窗口或框架被調整尺寸
參考資料:http://www.w3school.com.cn/js/index.asp
JavaScript學習筆記之對象