1. 程式人生 > >JavaScript學習筆記之對象

JavaScript學習筆記之對象

列表 strong result charat() 移動 mouseup getc 刪除 chan

目錄

  • 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學習筆記之對象