㈠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 | 替換與正則表達式匹配的子串。 | 1 | 4 |
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方法,用以處理私有變量。