溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

ecmascript中有什么內(nèi)置對象

發(fā)布時(shí)間:2021-12-06 15:38:26 來源:億速云 閱讀:143 作者:小新 欄目:web開發(fā)

小編給大家分享一下ecmascript中有什么內(nèi)置對象,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

ecmascript中內(nèi)置對象有:全局對象、Object對象、Function對象、Array對象、String對象、Boolean對象、Number對象、Math對象、Date對象、RegExp對象、JSON對象、Error對象。

本教程操作環(huán)境:windows7系統(tǒng)、ECMAScript 6版、Dell G3電腦。

ECMAScript 定義一組內(nèi)置對象 (built-in objects),勾勒出 ECMAScript 實(shí)體 的定義。

這些內(nèi)置對象包括:

全局對象 (global object) ,Object對象 , Function對象 ,Array對象 ,String對象 ,Boolean對象 ,Number對象 , Math對象 ,Date對象 ,RegExp對象 ,JSON對象,和 Error對象: Error , EvalError ,RangeError ,ReferenceError ,SyntaxError ,TypeError , URIError 。

全局對象

唯一的全局對象建立在控制進(jìn)入任何執(zhí)行環(huán)境之前。

除非另外指明,全局對象的標(biāo)準(zhǔn)內(nèi)置屬性擁有特性 {[[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true}。

全局對象沒有 [[Construct]] 內(nèi)部屬性 ; 全局對象不可能當(dāng)做構(gòu)造器用 new 運(yùn)算符調(diào)用。

全局對象沒有 [[Call]] 內(nèi)部屬性,全局對象不可能當(dāng)做函數(shù)來調(diào)用。

全局對象的 [[Prototype]] 和 [[Class]] 內(nèi)部屬性值是依賴于實(shí)現(xiàn)的。

除了本規(guī)范定義的屬性之外,全局對象還可以擁有額外的宿主定義的屬性。全局對象可包含一個(gè)值是全局對象自身的屬性;例如,在 HTML 文檔對象模型中全局對象的 window 屬性是全局對象自身。

Object 對象

作為函數(shù)調(diào)用 Object 構(gòu)造器

當(dāng)把 Object 當(dāng)做一個(gè)函數(shù)來調(diào)用,而不是一個(gè)構(gòu)造器,它會執(zhí)行一個(gè)類型轉(zhuǎn)換。

Object ( [ value ] )

當(dāng)以一個(gè)參數(shù) value 或者無參數(shù)調(diào)用 Object 函數(shù),采用如下步驟:

  • 如果 value 是 null, undefined 或未指定,則創(chuàng)建并返回一個(gè)新 Object 對象 , 這個(gè)對象與仿佛用相同參數(shù)調(diào)用標(biāo)準(zhǔn)內(nèi)置的 Object 構(gòu)造器 (15.2.2.1) 的結(jié)果一樣 .

  • 返回 ToObject(value).

Object 構(gòu)造器

當(dāng) Object 是 new 表達(dá)式調(diào)用的一部分時(shí),它是一個(gè)構(gòu)造器,可創(chuàng)建一個(gè)對象。

new Object ( [ value ] )

當(dāng)以一個(gè)參數(shù) value 或者無參數(shù)調(diào)用 Object 構(gòu)造器,采用如下步驟:

  • 如果提供了 value, 則如果 Type(value) 是 Object, 則如果 value 是個(gè)原生 ECMAScript 對象 , 不創(chuàng)建新對象,簡單的返回 value.如果 value 是宿主對象 , 則采取動作和返回依賴實(shí)現(xiàn)的結(jié)果的方式可以使依賴于宿主對象的 .如果 Type(value) 是 String, 返回 ToObject(value).如果 Type(value) 是 Boolean, 返回 ToObject(value).如果 Type(value) 是 Number, 返回 ToObject(value).

  • 斷言 : 未提供參數(shù) value 或其類型是 Null 或 Undefined.

  • 令 obj 為一個(gè)新創(chuàng)建的原生 ECMAScript 對象 .

  • 設(shè)定 obj 的 [[Prototype]] 內(nèi)部屬性為標(biāo)準(zhǔn)內(nèi)置的 Object 的 prototype 對象 (15.2.4).

  • 設(shè)定 obj 的 [[Class]] 內(nèi)部屬性為 "Object".

  • 設(shè)定 obj 的 [[Extensible]] 內(nèi)部屬性為 true.

  • 設(shè)定 obj 的 8.12 指定的所有內(nèi)部方法

  • 返回 obj.

Function 對象

作為函數(shù)調(diào)用 Function 構(gòu)造器

當(dāng)將 Function 作為函數(shù)來調(diào)用,而不是作為構(gòu)造器,它會創(chuàng)建并初始化一個(gè)新函數(shù)對象。所以函數(shù)調(diào)用 Function(…) 與用相同參數(shù)的 new Function(…) 表達(dá)式創(chuàng)建的對象相同。

Function (p1, p2, … , pn, body)

當(dāng)以 p1, p2, … , pn, body 作為參數(shù)調(diào)用 Function 函數(shù)(這里的 n 可以是 0,也就是說沒有“p”參數(shù),這時(shí)還可以不提供 body),采用如下步驟:

  • 創(chuàng)建并返回一個(gè)新函數(shù)對象,它仿佛是用相同參數(shù)給標(biāo)準(zhǔn)內(nèi)置構(gòu)造器 Function (15.3.2.1). 用一個(gè) new 表達(dá)式創(chuàng)建的。

Function 構(gòu)造器

當(dāng) Function 作為 new 表達(dá)式的一部分被調(diào)用時(shí),它是一個(gè)構(gòu)造器:它初始化新創(chuàng)建的對象。

new Function (p1, p2, … , pn, body)

最后一個(gè)參數(shù)指定為函數(shù)的 body( 可執(zhí)行代碼 );之前的任何參數(shù)都指定為形式參數(shù)。

當(dāng)以 p1, p2, … , pn, body 作為參數(shù)調(diào)用 Function 構(gòu)造器(這里的 n 可以是 0,也就是說沒有“p”參數(shù),這時(shí)還可以不提供 body),采用如下步驟:

  • 令 argCount 為傳給這個(gè)函數(shù)調(diào)用的參數(shù)總數(shù) .

  • 令 P 為空字符串 .

  • 如果 argCount = 0, 令 body 為空字符串 .

  • 否則如果 argCount = 1, 令 body 為那個(gè)參數(shù) .

  • 否則 , argCount > 1令 firstArg 為第一個(gè)參數(shù) .令 P 為 ToString(firstArg).令 k 為 2.只要 k < argCount 就重復(fù)令 nextArg 為第 k 個(gè)參數(shù) .令 P 為之前的 P 值,字符串 ","(一個(gè)逗號),ToString(nextArg) 串聯(lián)的結(jié)果。k 遞增 1.令 body 為第 k 個(gè)參數(shù) .

  • 令 body 為 ToString(body).

  • 如果 P 不可解析為一個(gè) FormalParameterListopt,則拋出一個(gè) SyntaxError 異常 .

  • 如果 body 不可解析為 FunctionBody,則拋出一個(gè) SyntaxError 異常 .

  • 如果 body 是嚴(yán)格模式代碼 ( 見 10.1.1),則令 strict 為 true, 否則令 strict 為 false.

  • 如果 strict 是 true, 適用 13.1 指定拋出的任何異常 .

  • 返回一個(gè)新創(chuàng)建的函數(shù)對象,它是依照 13.2 指定 -- 專遞 P 作為 FormalParameterList,body 作為 FunctionBody,全局環(huán)境作為 Scope 參數(shù),strict 作為嚴(yán)格模式標(biāo)志 -- 創(chuàng)建的。

每個(gè)函數(shù)都會自動創(chuàng)建一個(gè) prototype 屬性,用來支持函數(shù)被當(dāng)做構(gòu)造器使用的可能性。

為每個(gè)形參指定一個(gè)參數(shù)是允許的,但沒必要。例如以下三個(gè)表達(dá)式產(chǎn)生相同的結(jié)果:

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 對象

數(shù)組是值的有序集合,數(shù)組中的每個(gè)值稱為一個(gè)元素,每個(gè)元素在數(shù)組中都有一個(gè)數(shù)字位置,稱為索引,索引從 0 開始,依次遞增。在 JavaScript 中,您可以使用 Array 對象定義數(shù)組,此外,Array 對象中還提供了各種有關(guān)數(shù)組的屬性和方法。

創(chuàng)建 Array 對象的語法格式如下:

var arr = new Array(values);
var arr = Array(values);

其中,values 為數(shù)組中各個(gè)元素組成的列表,多個(gè)元素之間使用逗號分隔。

String 對象

String 對象用于處理字符串,其中提供了大量操作字符串的方法,以及一些屬性。

創(chuàng)建 String 對象的語法格式如下:

var val = new String(value);
var val = String(value);

其中參數(shù) value 為要?jiǎng)?chuàng)建的字符串或字符串對象。

JavaScript 中,字符串和字符串對象之間能夠自由轉(zhuǎn)換,因此不論是創(chuàng)建字符串對象還是直接聲明字符串類型的變量,都可以直接使用字符串對象中提供的方法和屬性。

Boolean對象

JavaScript 布爾值可以有以下兩個(gè)值之一:true 或 false。

作為函數(shù)調(diào)用布爾構(gòu)造器

當(dāng)把 Boolean 作為函數(shù)來調(diào)用,而不是作為構(gòu)造器,它執(zhí)行一個(gè)類型轉(zhuǎn)換。

Boolean (value)

返回由 ToBoolean(value) 計(jì)算出的布爾值(非布爾對象)。

布爾構(gòu)造器

當(dāng) Boolean 作為 new 表達(dá)式的一部分來調(diào)用,那么它是一個(gè)構(gòu)造器:它初始化新創(chuàng)建的對象。

new Boolean (value)

新構(gòu)造對象的 [[Prototype]] 內(nèi)部屬性設(shè)定為原始布爾原型對象,它是 Boolean.prototype (15.6.3.1) 的初始值。

新構(gòu)造對象的 [[Class]] 內(nèi)部屬性設(shè)定為 "Boolean"。

新構(gòu)造對象的 [[PrimitiveValue]] 內(nèi)部屬性設(shè)定為 ToBoolean(value)。

新構(gòu)造對象的 [[Extensible]] 內(nèi)部屬性設(shè)定為 true。

Number 對象

在 JavaScript 中您可以使用十進(jìn)制、十六進(jìn)制或八進(jìn)制表示法來表示整數(shù)或浮點(diǎn)數(shù)。與其它編程語言不同,JavaScript 中的數(shù)字并不區(qū)分整數(shù)和浮點(diǎn)數(shù),統(tǒng)一使用 IEEE754 標(biāo)準(zhǔn)(二進(jìn)制浮點(diǎn)數(shù)算術(shù)標(biāo)準(zhǔn))的 64 位浮點(diǎn)格式表示數(shù)字,能表示的最大值(Number.MAX_VALUE)為 ±1.7976931348623157e+308,最小值(Number.MIN_VALUE)為 ±5e-324。示例代碼如下:

var x = 123;    // 整數(shù)
var y = 3.14;   // 浮點(diǎn)數(shù)
var z = 0xff;   // 十六進(jìn)制數(shù):255

對于比較大的數(shù)字可以使用指數(shù)表示法來表示,例如 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 中能夠表示的最大的整數(shù)是 2?3 - 1,即 9007199254740991,能夠表示的最小整數(shù)是 -(2?3 - 1),即 -9007199254740991。

除了可以使用十進(jìn)制表示數(shù)字外,您也可以使用八進(jìn)制或十六進(jìn)制表示法來表示數(shù)字,其中八進(jìn)制表示法使用 0 作為前綴,十六進(jìn)制表示法使用 0x 作為前綴,示例代碼如下:

var a = 0377;     // 等于 255
var b = 0123;     // 等于 83
var c = 0xff;     // 等于 255
var d = 0xb4;     // 等于 180

注意:整數(shù)可以用十進(jìn)制、十六進(jìn)制和八進(jìn)制表示法表示,浮點(diǎn)數(shù)可以用十進(jìn)制或指數(shù)表示法表示。

Math 對象

Math 是 JavaScript 中的一個(gè)內(nèi)置對象,其中提供了一些數(shù)學(xué)中常用的常量值和函數(shù),用來實(shí)現(xiàn)一些數(shù)學(xué)中常見計(jì)算,例如計(jì)算平均數(shù)、求絕對值、四舍五入等。

與前面介紹的幾個(gè)對象(例如 Number 對象、String 對象、Array 對象等)不同,調(diào)用 Math 對象中的屬性和方法無需預(yù)先使用 new 運(yùn)算符來創(chuàng)建它,直接將 Math 作為對象調(diào)用即可,例如:

var pi_val = Math.PI;                 // 數(shù)學(xué)中 π 的值:3.141592653589793
var abs_val = Math.sin(-5.35);  // -5.35 的絕對值:5.35

Math 對象是擁有一些命名屬性的單一對象,其中一些屬性值是函數(shù)。

Math 對象的 [[Prototype]] 內(nèi)部屬性值是標(biāo)準(zhǔn)內(nèi)置 Object 原型對象 (15.2.4)。Math 對象的 [[Class]] 內(nèi)部屬性值是 "Math"。

Math 對象沒有 [[Construct]] 內(nèi)部屬性 ; Math 對象不能作為構(gòu)造器被 new 運(yùn)算符調(diào)用。

Math 對象沒有 [[Call]] 內(nèi)部屬性;Math 對象不能作為函數(shù)被調(diào)用。

Date 對象

Date 對象是 JavaScript 內(nèi)置的對象,通過它您可以訪問計(jì)算機(jī)系統(tǒng)的時(shí)間,此外,Date 對象中還提供了多種用于管理、操作和格式化時(shí)間/日期的方法。

RegExp ( 正則表達(dá)式 ) 對象

一個(gè) RegExp 對象包含一個(gè)正則表達(dá)式和關(guān)聯(lián)的標(biāo)志。

正則表達(dá)式的格式和功能是以 Perl 5 程序語言的正則表達(dá)式設(shè)施為藍(lán)本的。

JavaScript 字符串是在編程中使用最多的一種數(shù)據(jù)類型,很多地方都需要對字符串進(jìn)行操作,例如判斷一個(gè)字符串是否為一個(gè)合法的 E-mail 地址、從字符串截取指定的部分等。

正則表達(dá)式是一種用于匹配字符串或特殊字符的一種邏輯公式,所謂邏輯公式就是由一些特定字符組合成的,用來表示某些規(guī)則的特殊字符串,可以表達(dá)對字符串?dāng)?shù)據(jù)的過濾邏輯。

在 JavaScript 中需要借助 RegExp 對象來使用正則表達(dá)式,要?jiǎng)?chuàng)建 RegExp 對象有兩種方法,如下所示:

var patt = new RegExp(pattern, modifiers);
var patt = /pattern/modifiers;

參數(shù)說明如下:

  • pattern:正則表達(dá)式,按照正則表達(dá)式的語法定義的正則表達(dá)式;

  • modifiers:修飾符,用來設(shè)置字符串的匹配模式。

JSON 對象

JSON 對象是一個(gè)單一的對象,它包含兩個(gè)函數(shù),parse 和 stringify,是用于解析和構(gòu)造 JSON 文本的。JSON 數(shù)據(jù)的交換格式在 RFC4627 里進(jìn)行了描述。 <http://www.ietf.org/rfc/rfc4627.txt>。本規(guī)范里面的 JSON 交換格式會使用 RFC4627 里所描述的,以下兩點(diǎn)除外:

  • ECMAScript JSON 文法中的頂級 JSONText 產(chǎn)生式是由 JSONValue 構(gòu)成,而不是 RFC4627 中限制成的 JSONObject 或者 JSONArray。

  • 確認(rèn) JSON.parse 和 JSON.stringify 的實(shí)現(xiàn),它們必須準(zhǔn)確的支持本規(guī)范描述的交換格式,而不允許對格式進(jìn)行刪除或擴(kuò)展。這一點(diǎn)要區(qū)別于 RFC4627,它允許 JSON 解析器接受 non-JSON 的格式和擴(kuò)展。

JSON 對象內(nèi)部屬性 [[Prototype]] 的值是標(biāo)準(zhǔn)內(nèi)建的 Object 原型對象(15.2.4)。內(nèi)部屬性 [[Class]] 的值是“JSON”。內(nèi)部屬性 [[Extensible]] 的值設(shè)置為 true。

JSON 對象沒有內(nèi)部屬性 [[Construct]];不能把 JSON 對象當(dāng)作構(gòu)造器來使用 new 操作符。

JSON 對象沒有內(nèi)部屬性 [[Call]]; 不能把 JSON 對象當(dāng)作函數(shù)來調(diào)用。

Error 對象

Error對象的實(shí)例在運(yùn)行時(shí)遇到錯(cuò)誤的情況下會被當(dāng)做異常拋出。Error對象也可以作為用戶自定義異常類的基對象。

以上是“ecmascript中有什么內(nèi)置對象”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI