您好,登錄后才能下訂單哦!
小編給大家分享一下ecmascript中有什么內置對象,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
ecmascript中內置對象有:全局對象、Object對象、Function對象、Array對象、String對象、Boolean對象、Number對象、Math對象、Date對象、RegExp對象、JSON對象、Error對象。
本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。
ECMAScript 定義一組內置對象 (built-in objects),勾勒出 ECMAScript 實體 的定義。
這些內置對象包括:
全局對象 (global object) ,Object對象 , Function對象 ,Array對象 ,String對象 ,Boolean對象 ,Number對象 , Math對象 ,Date對象 ,RegExp對象 ,JSON對象,和 Error對象: Error , EvalError ,RangeError ,ReferenceError ,SyntaxError ,TypeError , URIError 。
全局對象
唯一的全局對象建立在控制進入任何執行環境之前。
除非另外指明,全局對象的標準內置屬性擁有特性 {[[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true}。
全局對象沒有 [[Construct]] 內部屬性 ; 全局對象不可能當做構造器用 new 運算符調用。
全局對象沒有 [[Call]] 內部屬性,全局對象不可能當做函數來調用。
全局對象的 [[Prototype]] 和 [[Class]] 內部屬性值是依賴于實現的。
除了本規范定義的屬性之外,全局對象還可以擁有額外的宿主定義的屬性。全局對象可包含一個值是全局對象自身的屬性;例如,在 HTML 文檔對象模型中全局對象的 window 屬性是全局對象自身。
Object 對象
作為函數調用 Object 構造器
當把 Object 當做一個函數來調用,而不是一個構造器,它會執行一個類型轉換。
Object ( [ value ] )
當以一個參數 value 或者無參數調用 Object 函數,采用如下步驟:
如果 value 是 null, undefined 或未指定,則創建并返回一個新 Object 對象 , 這個對象與仿佛用相同參數調用標準內置的 Object 構造器 (15.2.2.1) 的結果一樣 .
返回 ToObject(value).
Object 構造器
當 Object 是 new 表達式調用的一部分時,它是一個構造器,可創建一個對象。
new Object ( [ value ] )
當以一個參數 value 或者無參數調用 Object 構造器,采用如下步驟:
如果提供了 value, 則如果 Type(value) 是 Object, 則如果 value 是個原生 ECMAScript 對象 , 不創建新對象,簡單的返回 value.如果 value 是宿主對象 , 則采取動作和返回依賴實現的結果的方式可以使依賴于宿主對象的 .如果 Type(value) 是 String, 返回 ToObject(value).如果 Type(value) 是 Boolean, 返回 ToObject(value).如果 Type(value) 是 Number, 返回 ToObject(value).
斷言 : 未提供參數 value 或其類型是 Null 或 Undefined.
令 obj 為一個新創建的原生 ECMAScript 對象 .
設定 obj 的 [[Prototype]] 內部屬性為標準內置的 Object 的 prototype 對象 (15.2.4).
設定 obj 的 [[Class]] 內部屬性為 "Object".
設定 obj 的 [[Extensible]] 內部屬性為 true.
設定 obj 的 8.12 指定的所有內部方法
返回 obj.
Function 對象
作為函數調用 Function 構造器
當將 Function 作為函數來調用,而不是作為構造器,它會創建并初始化一個新函數對象。所以函數調用 Function(…) 與用相同參數的 new Function(…) 表達式創建的對象相同。
Function (p1, p2, … , pn, body)
當以 p1, p2, … , pn, body 作為參數調用 Function 函數(這里的 n 可以是 0,也就是說沒有“p”參數,這時還可以不提供 body),采用如下步驟:
創建并返回一個新函數對象,它仿佛是用相同參數給標準內置構造器 Function (15.3.2.1). 用一個 new 表達式創建的。
Function 構造器
當 Function 作為 new 表達式的一部分被調用時,它是一個構造器:它初始化新創建的對象。
new Function (p1, p2, … , pn, body)
最后一個參數指定為函數的 body( 可執行代碼 );之前的任何參數都指定為形式參數。
當以 p1, p2, … , pn, body 作為參數調用 Function 構造器(這里的 n 可以是 0,也就是說沒有“p”參數,這時還可以不提供 body),采用如下步驟:
令 argCount 為傳給這個函數調用的參數總數 .
令 P 為空字符串 .
如果 argCount = 0, 令 body 為空字符串 .
否則如果 argCount = 1, 令 body 為那個參數 .
否則 , argCount > 1令 firstArg 為第一個參數 .令 P 為 ToString(firstArg).令 k 為 2.只要 k < argCount 就重復令 nextArg 為第 k 個參數 .令 P 為之前的 P 值,字符串 ","(一個逗號),ToString(nextArg) 串聯的結果。k 遞增 1.令 body 為第 k 個參數 .
令 body 為 ToString(body).
如果 P 不可解析為一個 FormalParameterListopt,則拋出一個 SyntaxError 異常 .
如果 body 不可解析為 FunctionBody,則拋出一個 SyntaxError 異常 .
如果 body 是嚴格模式代碼 ( 見 10.1.1),則令 strict 為 true, 否則令 strict 為 false.
如果 strict 是 true, 適用 13.1 指定拋出的任何異常 .
返回一個新創建的函數對象,它是依照 13.2 指定 -- 專遞 P 作為 FormalParameterList,body 作為 FunctionBody,全局環境作為 Scope 參數,strict 作為嚴格模式標志 -- 創建的。
每個函數都會自動創建一個 prototype 屬性,用來支持函數被當做構造器使用的可能性。
為每個形參指定一個參數是允許的,但沒必要。例如以下三個表達式產生相同的結果:
new Function("a", "b", "c", "return a+b+c") new Function("a, b, c", "return a+b+c") new Function("a,b", "c", "return a+b+c")
Array 對象
數組是值的有序集合,數組中的每個值稱為一個元素,每個元素在數組中都有一個數字位置,稱為索引,索引從 0 開始,依次遞增。在 JavaScript 中,您可以使用 Array 對象定義數組,此外,Array 對象中還提供了各種有關數組的屬性和方法。
創建 Array 對象的語法格式如下:
var arr = new Array(values); var arr = Array(values);
其中,values 為數組中各個元素組成的列表,多個元素之間使用逗號分隔。
String 對象
String 對象用于處理字符串,其中提供了大量操作字符串的方法,以及一些屬性。
創建 String 對象的語法格式如下:
var val = new String(value); var val = String(value);
其中參數 value 為要創建的字符串或字符串對象。
JavaScript 中,字符串和字符串對象之間能夠自由轉換,因此不論是創建字符串對象還是直接聲明字符串類型的變量,都可以直接使用字符串對象中提供的方法和屬性。
Boolean對象
JavaScript 布爾值可以有以下兩個值之一:true 或 false。
作為函數調用布爾構造器
當把 Boolean 作為函數來調用,而不是作為構造器,它執行一個類型轉換。
Boolean (value)
返回由 ToBoolean(value) 計算出的布爾值(非布爾對象)。
布爾構造器
當 Boolean 作為 new 表達式的一部分來調用,那么它是一個構造器:它初始化新創建的對象。
new Boolean (value)
新構造對象的 [[Prototype]] 內部屬性設定為原始布爾原型對象,它是 Boolean.prototype (15.6.3.1) 的初始值。
新構造對象的 [[Class]] 內部屬性設定為 "Boolean"。
新構造對象的 [[PrimitiveValue]] 內部屬性設定為 ToBoolean(value)。
新構造對象的 [[Extensible]] 內部屬性設定為 true。
Number 對象
在 JavaScript 中您可以使用十進制、十六進制或八進制表示法來表示整數或浮點數。與其它編程語言不同,JavaScript 中的數字并不區分整數和浮點數,統一使用 IEEE754 標準(二進制浮點數算術標準)的 64 位浮點格式表示數字,能表示的最大值(Number.MAX_VALUE)為 ±1.7976931348623157e+308,最小值(Number.MIN_VALUE)為 ±5e-324。示例代碼如下:
var x = 123; // 整數 var y = 3.14; // 浮點數 var z = 0xff; // 十六進制數:255
對于比較大的數字可以使用指數表示法來表示,例如 6.02e+23 等于 6.02 x 1023,示例代碼如下:
var x = 1.57e4; // 等于 15700 var y = 4.25e+6; // 等于 4250000 var z = 4.25e-6; // 等于 0.00000425
提示:JavaScript 中能夠表示的最大的整數是 2?3 - 1,即 9007199254740991,能夠表示的最小整數是 -(2?3 - 1),即 -9007199254740991。
除了可以使用十進制表示數字外,您也可以使用八進制或十六進制表示法來表示數字,其中八進制表示法使用 0 作為前綴,十六進制表示法使用 0x 作為前綴,示例代碼如下:
var a = 0377; // 等于 255 var b = 0123; // 等于 83 var c = 0xff; // 等于 255 var d = 0xb4; // 等于 180
注意:整數可以用十進制、十六進制和八進制表示法表示,浮點數可以用十進制或指數表示法表示。
Math 對象
Math 是 JavaScript 中的一個內置對象,其中提供了一些數學中常用的常量值和函數,用來實現一些數學中常見計算,例如計算平均數、求絕對值、四舍五入等。
與前面介紹的幾個對象(例如 Number 對象、String 對象、Array 對象等)不同,調用 Math 對象中的屬性和方法無需預先使用 new 運算符來創建它,直接將 Math 作為對象調用即可,例如:
var pi_val = Math.PI; // 數學中 π 的值:3.141592653589793 var abs_val = Math.sin(-5.35); // -5.35 的絕對值:5.35
Math 對象是擁有一些命名屬性的單一對象,其中一些屬性值是函數。
Math 對象的 [[Prototype]] 內部屬性值是標準內置 Object 原型對象 (15.2.4)。Math 對象的 [[Class]] 內部屬性值是 "Math"。
Math 對象沒有 [[Construct]] 內部屬性 ; Math 對象不能作為構造器被 new 運算符調用。
Math 對象沒有 [[Call]] 內部屬性;Math 對象不能作為函數被調用。
Date 對象
Date 對象是 JavaScript 內置的對象,通過它您可以訪問計算機系統的時間,此外,Date 對象中還提供了多種用于管理、操作和格式化時間/日期的方法。
RegExp ( 正則表達式 ) 對象
一個 RegExp 對象包含一個正則表達式和關聯的標志。
正則表達式的格式和功能是以 Perl 5 程序語言的正則表達式設施為藍本的。
JavaScript 字符串是在編程中使用最多的一種數據類型,很多地方都需要對字符串進行操作,例如判斷一個字符串是否為一個合法的 E-mail 地址、從字符串截取指定的部分等。
正則表達式是一種用于匹配字符串或特殊字符的一種邏輯公式,所謂邏輯公式就是由一些特定字符組合成的,用來表示某些規則的特殊字符串,可以表達對字符串數據的過濾邏輯。
在 JavaScript 中需要借助 RegExp 對象來使用正則表達式,要創建 RegExp 對象有兩種方法,如下所示:
var patt = new RegExp(pattern, modifiers); var patt = /pattern/modifiers;
參數說明如下:
pattern:正則表達式,按照正則表達式的語法定義的正則表達式;
modifiers:修飾符,用來設置字符串的匹配模式。
JSON 對象
JSON 對象是一個單一的對象,它包含兩個函數,parse 和 stringify,是用于解析和構造 JSON 文本的。JSON 數據的交換格式在 RFC4627 里進行了描述。 <http://www.ietf.org/rfc/rfc4627.txt>。本規范里面的 JSON 交換格式會使用 RFC4627 里所描述的,以下兩點除外:
ECMAScript JSON 文法中的頂級 JSONText 產生式是由 JSONValue 構成,而不是 RFC4627 中限制成的 JSONObject 或者 JSONArray。
確認 JSON.parse 和 JSON.stringify 的實現,它們必須準確的支持本規范描述的交換格式,而不允許對格式進行刪除或擴展。這一點要區別于 RFC4627,它允許 JSON 解析器接受 non-JSON 的格式和擴展。
JSON 對象內部屬性 [[Prototype]] 的值是標準內建的 Object 原型對象(15.2.4)。內部屬性 [[Class]] 的值是“JSON”。內部屬性 [[Extensible]] 的值設置為 true。
JSON 對象沒有內部屬性 [[Construct]];不能把 JSON 對象當作構造器來使用 new 操作符。
JSON 對象沒有內部屬性 [[Call]]; 不能把 JSON 對象當作函數來調用。
Error 對象
Error對象的實例在運行時遇到錯誤的情況下會被當做異常拋出。Error對象也可以作為用戶自定義異常類的基對象。
以上是“ecmascript中有什么內置對象”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。