ecmascript の組み込みオブジェクトとは何ですか?

青灯夜游
リリース: 2021-12-06 15:23:39
オリジナル
1682 人が閲覧しました

ecmascript の組み込みオブジェクトには、グローバル オブジェクト、Object オブジェクト、Function オブジェクト、Array オブジェクト、String オブジェクト、Boolean オブジェクト、Number オブジェクト、Math オブジェクト、Date オブジェクト、RegExp オブジェクト、JSON オブジェクト、Error が含まれます。物体。

ecmascript の組み込みオブジェクトとは何ですか?

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

ECMAScript は、ECMAScript エンティティの定義の概要を示す一連の組み込みオブジェクトを定義します。

これらの組み込みオブジェクトには次のものが含まれます:

Global オブジェクト、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 ( [ value ] )
ログイン後にコピー

パラメーター値を指定してオブジェクト関数を呼び出す場合、またはパラメーターを指定せずにオブジェクト関数を呼び出す場合は、次の手順を実行します。

  • 値が null、未定義、または指定されていない場合は、新しい Object オブジェクト。これは、同じパラメータを使用して標準の組み込み Object コンストラクター (15.2.2.1) を呼び出した結果と同じです。

  • Return ToObject(value).

オブジェクト コンストラクター

Object が新しい式呼び出しの一部である場合、それはオブジェクトを作成するコンストラクターです。

new Object ( [ value ] )

パラメーター値を指定して、またはパラメーターを指定せずに Object コンストラクターを呼び出す場合は、次の手順を実行します。

  • 値が指定されている場合、Type(値) が Object の場合、値がネイティブ ECMAScript オブジェクトの場合、新しいオブジェクトは作成されず、値が単純に返されます。値がホスト オブジェクトの場合、アクションが実行されます。実装に依存 結果のメソッドはホスト オブジェクトに依存する可能性があります。Type(value) が String の場合、ToObject(value) を返します。Type(value) が Boolean の場合、ToObject(value) を返します。Type(value) が の場合、ToObject(value) を返します。数値、ToObject( 値) を返します。

  • アサーション: パラメーター値が指定されていないか、その型が Null または未定義です。

  • Let obj新しく作成されたネイティブ ECMAScript オブジェクトであること。

  • #obj の [[Prototype]] 内部プロパティを標準の組み込みオブジェクト プロトタイプ オブジェクト (15.2.4) に設定します。

  • obj の [[Class]] 内部プロパティを "Object" に設定します。

  • obj の [[Extensible]] 内部プロパティを true に設定します。

  • obj の 8.12 で指定されたすべての内部メソッドを設定します。

  • Return obj.

#Function オブジェクト

Function コンストラクターを関数として呼び出す

Function がコンストラクターではなく関数として呼び出される場合、 New 関数オブジェクトを作成して初期化します。したがって、関数呼び出し Function(…) は、同じパラメーターを持つ新しい Function(…) 式と同じオブジェクトを作成します。

Function (p1, p2, … , pn, body)
ログイン後にコピー

p1、p2、…、pn、本体をパラメーターとして使用して Function 関数を呼び出す場合 (ここでの n は 0 にすることができます。つまり、「p」パラメーターはなく、本体には必要ありません)現時点で提供される) を使用するには、次の手順を使用します。

  • 標準の組み込みコンストラクター関数に対して同じパラメーターを使用して作成されたかのように、新しい関数オブジェクトを作成して返します。 (15.3.2.1) 新しい表現を使用します。

関数コンストラクター

関数が新しい式の一部として呼び出される場合、それはコンストラクターです。新しく作成されたオブジェクトを初期化します。

new Function (p1, p2, … , pn, 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 10²³,示例代码如下:

var x = 1.57e4;     // 等于 15700
var y = 4.25e+6;    // 等于 4250000
var z = 4.25e-6;    // 等于 0.00000425
ログイン後にコピー

提示:JavaScript 中能够表示的最大的整数是 2⁵³ - 1,即 9007199254740991,能够表示的最小整数是 -(2⁵³ - 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 里进行了描述。 。本规范里面的 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对象也可以作为用户自定义异常类的基对象。

【相关推荐:javascript学习教程

以上がecmascript の組み込みオブジェクトとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート