JavaScript中的三種對象:1、內部(置)對象,如Array,Boolean,Data,Math,Number,Object,RegExp,String對像等;2、宿主對象,即執行JS腳本的環境提供的對象;3、自訂對象。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦
JS三種物件在
JS中,可以將物件分為「內部物件」、「宿主物件」、「自訂物件」三種。
如圖所示:
內部物件
##⑴Number物件
⑵Math:內建物件
Math 物件屬性
屬性 | 描述 |
#E | 傳回算術常數e,也就是自然對數的底數(約等於2.718)。 |
LN2 | 傳回 2 的自然對數(約等於0.693)。 |
LN10 | 傳回 10 的自然對數(約等於2.302)。 |
LOG2E | 傳回以 2 為底的 e 的對數(約等於 1.4426950408889634)。 |
LOG10E | 傳回以 10 為底的 e 的對數(約等於0.434)。 |
PI | 傳回圓周率(約等於3.14159)。 |
SQRT1_2 | 傳回 2 的平方根的倒數(約等於 0.707)。 |
SQRT2 | 傳回 2 的平方根(約等於 1.414)。 |
Math 物件方法
方法 | 描述 |
abs(x) | 傳回x 的絕對值。 |
acos(x) | 傳回 x 的反餘弦值。 |
asin(x) | 傳回 x 的反正弦值。 |
atan(x) | 以介於 -PI/2 與 PI/2 弧度之間的數值來傳回 x 的反正切值。 |
atan2(y,x) | 傳回從x 軸到點(x,y) 的角度(介於-PI/2 與PI/2 弧度之間)。 |
ceil(x) | 對數進行上捨入。 |
cos(x) | 傳回數的餘弦。 |
exp(x) | 傳回 Ex 的指數。 |
floor(x) | 對 x 進行下捨入。 |
log(x) | 傳回數的自然對數(底為e)。 |
max(x,y,z,...,n) | 傳回 x,y,z,...,n 中的最高值。 |
min(x,y,z,...,n) | 傳回 x,y,z,...,n中的最低值。 |
pow(x,y) | 傳回 x 的 y 次方。 |
random() | 傳回 0 ~ 1 之間的隨機數。 |
round(x) | 四捨五入。 |
sin(x) | 傳回數的正弦。 |
sqrt(x) | 傳回數的平方根。 |
tan(x) | 傳回角的正切。 |
⑶Boolean 物件
Boolean 物件屬性
屬性 | 描述 |
constructor | 傳回對建立此物件的Boolean 函數的參考 |
prototype | 使您有能力為物件新增屬性和方法。 |
Boolean 物件方法
方法 | 說明 |
toString() | 把布林值轉換為字串,並傳回結果。 |
valueOf() | 傳回 Boolean 物件的原始值。 |
⑷String物件
String 物件屬性
屬性 | 描述 |
constructor | 對建立該物件的函數的參考 |
length | 字串的長度 |
prototype | 允許您向物件新增屬性和方法 |
String 物件方法
方法 |
描述 |
##charAt() | 傳回指定位置的字元。 |
charCodeAt() | 傳回指定的位置的字元的 Unicode 編碼。 |
concat() | 連接兩個或更多字串,並傳回新的字串。 |
fromCharCode() | 將 Unicode 編碼轉換為字元。 |
indexOf() | 傳回某個指定的字串值在字串中首次出現的位置。 |
includes() | 尋找字串中是否包含指定的子字串。 |
lastIndexOf() | 從後向前搜尋字串,並從起始位置(0)開始計算回傳字串最後出現的位置。 |
match() | 尋找找到一個或多個正規表示式的符合。 |
repeat() | 複製字串指定次數,並將它們連接在一起傳回。 |
replace() | 在字串中尋找符合的子字串, 並取代與正規表示式相符的子字串。 |
search() | 尋找與正規表示式相符的值。 |
slice() | 提取字串的片段,並在新的字串中傳回被提取的部分。 |
split() | 把字串分割成字串陣列。 |
startsWith() | 查看字串是否以指定的子字串開頭。 |
substr() | 從起始索引號擷取字串中指定數目的字元。 |
substring() | 會擷取字串中兩個指定的索引號之間的字元。 |
toLowerCase() | 把字串轉換成小寫。 |
toUpperCase() | 把字串轉換為大寫。 |
trim() | 移除字串兩邊的空白 |
toLocaleLowerCase() | 根據本地主機的語言環境把字串轉換為小寫。 |
toLocaleUpperCase() | 根據本機的語言環境將字串轉換為大寫。 |
valueOf() | 傳回某個字串物件的原始值。 |
toString() | 傳回一個字串。 |
⑸RegExp物件
RegExp 物件方法
|
|
|
|
| |
方法
描述 |
|
compile
在1.5 版本中已廢棄。 編譯正規表示式。 |
|
exec
檢索字串中指定的值。傳回找到的值,並確定其位置。
test檢索字串中指定的值。傳回 true 或 false。
|
toString |
傳回正規表示式的字串。 |
|
支援正規表示式的String 物件的方法 |
|
|
方法 |
描述
FF |
IE |
|
search |
擷取與正規表示式相符的值。
1 |
4 |
|
match |
找到一個或多個正規表示式的符合。
1 |
4 |
|
replace |
取代與正規表示式相符的子字串。
14
split
將字串分割成字串陣列。 |
1 |
4
|
|
#RegExp 物件屬性
|
| ##屬性
描述 |
| constructor
#傳回一個函數,該函數是一個建立RegExp 物件的原型。 |
| global
判斷是否設定了"g" 修飾符 |
| ignoreCase
## 判斷是否設定了"i" 修飾符
|
lastIndex |
用於規定下次符合的起始位置
multiline判斷是否設定了"m" 修飾符
source
#傳回正規表示式的匹配模式
|
| ⑹Global:內建物件
|
JavaScript 全域屬性 |
|
|
|
|
###############################################################################################################################################屬性######描述############Infinity######代表正的無窮大的數值。 ############NaN######指示某個值是不是數字值。 ############undefined######指示未定義的值。 ############ JavaScript 全域函數
函數 |
描述 |
##decodeURI() | 解碼某個編碼的URI。 |
decodeURIComponent() | 解碼一個編碼的 URI 元件。 |
encodeURI() | 把字串編碼為 URI。 |
encodeURIComponent() | 把字串編碼為 URI 元件。 |
escape() | 對字串進行編碼。 |
eval() | 計算 JavaScript 字串,並將它當作腳本程式碼來執行。 |
isFinite() | 檢查某個值是否為有窮大的數。 |
isNaN() | 檢查某個值是否是數字。 |
Number() | 把物件的值轉換成數字。 |
parseFloat() | 解析一個字串並傳回一個浮點數。 |
parseInt() | 解析一個字串並傳回一個整數。 |
String() | 把物件的值轉換成字串。 |
unescape() | 對由 escape() 編碼的字串進行解碼。 |
⑺Date物件
Date 物件屬性
######屬性######描述############constructor######傳回對建立此物件的Date 函數的參考。 ############prototype######使您有能力為物件新增屬性和方法。 ############ Date 物件方法
#方法 |
說明 |
##getDate() | 從Date 物件傳回一個月中的某一天(1 ~ 31)。 |
getDay() | 從 Date 物件傳回一週中的某一天 (0 ~ 6)。 |
getFullYear() | 從 Date 物件以四位數傳回年份。 |
getHours() | 傳回 Date 物件的小時 (0 ~ 23)。 |
getMilliseconds() | 傳回 Date 物件的毫秒(0 ~ 999)。 |
getMinutes() | 返回 Date 物件的分鐘 (0 ~ 59)。 |
getMonth() | 從 Date 物件傳回月份 (0 ~ 11)。 |
getSeconds() | 傳回 Date 物件的秒數 (0 ~ 59)。 |
getTime() | 傳回 1970 年 1 月 1 日至今的毫秒數。 |
getTimezoneOffset() | 傳回本地時間與格林威治標準時間 (GMT) 的分鐘差。 |
getUTCDate() | 根據世界時從 Date 物件返回月中的一天 (1 ~ 31)。 |
getUTCDay() | 根據世界時從 Date 物件返回週中的一天 (0 ~ 6)。 |
getUTCFullYear() | 根據世界時從 Date 物件傳回四位數的年份。 |
getUTCHours() | 根據世界時傳回 Date 物件的小時 (0 ~ 23)。 |
getUTCMilliseconds() | 根據世界時傳回 Date 物件的毫秒(0 ~ 999)。 |
getUTCMinutes() | 根據世界時傳回 Date 物件的分鐘 (0 ~ 59)。 |
getUTCMonth() | 根據世界時從 Date 物件傳回月份 (0 ~ 11)。 |
getUTCSeconds() | 根據世界時傳回 Date 物件的秒鐘 (0 ~ 59)。 |
getYear() | 已被廢棄。 請使用 getFullYear() 方法代替。 |
parse() | 傳回1970年1月1日午夜到指定日期(字串)的毫秒數。 |
setDate() | 設定 Date 物件中月的某一天 (1 ~ 31)。 |
setFullYear() | 設定 Date 物件中的年份(四位數字)。 |
setHours() | 設定 Date 物件中的小時 (0 ~ 23)。 |
setMilliseconds() | 設定 Date 物件中的毫秒 (0 ~ 999)。 |
setMinutes() | 設定 Date 物件中的分鐘 (0 ~ 59)。 |
setMonth() | 設定 Date 物件中月份 (0 ~ 11)。 |
setSeconds() | 設定 Date 物件中的秒鐘 (0 ~ 59)。 |
setTime() | setTime() 方法以毫秒設定 Date 物件。 |
setUTCDate() | 根據世界時設定 Date 物件中月份的一天 (1 ~ 31)。 |
setUTCFullYear() | 根據世界時設定 Date 物件中的年份(四位數字)。 |
setUTCHours() | 根據世界時設定 Date 物件中的小時 (0 ~ 23)。 |
setUTCMilliseconds() | 根據世界時設定 Date 物件中的毫秒 (0 ~ 999)。 |
setUTCMinutes() | 根據世界時設定 Date 物件中的分鐘 (0 ~ 59)。 |
setUTCMonth() | 根據世界時設定 Date 物件中的月份 (0 ~ 11)。 |
setUTCSeconds() | setUTCSeconds() 方法用於根據世界時 (UTC) 設定指定時間的秒字段。 |
setYear() | 已被廢棄。請使用 setFullYear() 方法代替。 |
toDateString() | 把 Date 物件的日期部分轉換為字串。 |
toGMTString() | 已被廢棄。請使用 toUTCString() 方法代替。 |
toISOString() | 使用 ISO 標準傳回字串的日期格式。 |
toJSON() | 以 JSON 資料格式傳回日期字串。 |
toLocaleDateString() | 根據本地時間格式,把 Date 物件的日期部分轉換成字串。 |
toLocaleTimeString() | 根據本機時間格式,把 Date 物件的時間部分轉換成字串。 |
toLocaleString() | 根據本機時間格式,把 Date 物件轉換為字串。 |
toString() | 把 Date 物件轉換為字串。 |
toTimeString() | 把 Date 物件的時間部分轉換為字串。 |
toUTCString() |
根據世界時,把 Date 物件轉換為字串。 實例:
var today = new Date();var UTCstring = today.toUTCString(); 登入後複製
|
UTC() | 根據世界時傳回 1970 年 1 月 1 日 到指定日期的毫秒數。 |
valueOf() | 傳回 Date 物件的原始值。 |
⑻Object物件
#⑼Array物件
⑽Function物件
#各種錯誤類別物件:
⑴Error⑵EvalError⑶RangeError⑷ReferenceError
⑸SyntaxError⑹TypeError
JS宿主物件
⑴ 定義:宿主物件就是執行JS腳本的環境提供的物件。 ⑵ 瀏覽器對象:對於嵌入網頁的JS來說,其宿主對象就是瀏覽器提供的對象,所以又稱為瀏覽器對象,如IE、Firefox等瀏覽器提供的對象。
###⑶ 注意:不同的瀏覽器提供的宿主物件可能不同,即使提供的物件相同,其實作方式也大不相同!這會帶來瀏覽器相容問題,增加開發難度。 ######⑷ 宿主物件範例:window,navigator,document等等######⑸ 瀏覽器擴充物件:Active,XML,Debug,Script,VBArray等等########## JS自訂對象############⑴對象字面量方式(透過JSON來創建對象)#########缺點:使用同一個介面創建很多對象,會產生大量的重複程式碼。 #########⑵工廠模式。 #########①工廠模式就是將創建對象的語句放在一個函數裡,透過傳入參數來建立特定對象,最後返回創建的對象。 ###### 函數createPerson()能夠根據接受到的參數來建構一個包含所有必要資訊的Person物件。 ###### 可以無數次的呼叫這個函數,而每次它都會回傳一個包含2個屬性和一個方法的物件。 ######②缺點:工廠模式雖然可以創建多個相似的對象,但卻無法解決對象標識的問題,即如何知道一個對象的類型。 #########⑶建構子模式#########①缺點:使用建構子的主要問題是:每個方法都要在每個實例上建立一遍。 ######②在ECMAScript中,函數即對象,因此每定義一個函數,也就是實例化了一個物件。 ######③也就是說透過建構函式實例化的多個物件的方法,是多個不同的方法,但它們內部的程式碼以及實現的功能是相同的,這就造成了一定的資源浪費。 #########⑷原型模式#########①js中,每個函數都有一個prototype屬性,它是一個指針,指向一個對象,叫做原型對象。 ######②使用原型模式可以讓所有的實例共享原型物件中的屬性和方法,也就是說,不必再建構函式中定義物件實例的資訊。 ######③缺點:省略了為建構函式傳遞初始化參數這一環節,結果所有實例在預設情況下都會取得相同的屬性值。 ###### 原型模式的最大問題是由共享的本質所造成的。原型中所有屬性是許多實例共享的###### 此共享對於函數非常適合。對於包含引用類型的屬性來說,問題就比較突出了。 ######④因此,很少單獨使用原型模式。 #########⑸組合使用建構函式模式和原型模式#########①組合使用建構函式模式和原型模式,是建立自訂類型最常見的方式。 ######②建構子模式用於定義實例屬性,而原型模式用於定義方法和共享的屬性。 ######③結果,每個實例都會有自己的一份實例屬性的副本,但同時又共享著對方法的引用,最大限度的節省了記憶體。 #########⑹其他模式#########①動態原型模式:僅在第一次呼叫建構函式時,將方法賦給原型物件的對應屬性,其他範例的處理方式同建構函式模式######②寄生建構函式模式:僅封裝建立物件的程式碼,然後再傳回新建立的對象,仍使用new運算元呼叫######③穩妥建構函式模式:沒有公有屬性,只有私有變數和方法,以及一些get/set方法,用來處理私有變數。 #########更多程式相關知識,請造訪:###程式設計入門###! ! ###
以上是JavaScript中有哪三種對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!