目次
- instanceof
- new
- delete
- in
- super
- プロパティアクセッサー
- オブジェクトリテラル
1. instanceof
instanceof 演算子は、あるコンストラクターの prototype プロパティが、あるオブジェクトのプロトタイプチェーンの中のどこかに現れるかどうかを検査します。返値は論理値です。
function Car(make, model, year) { this.make = make; this.model = model; this.year = year; } const auto = new Car('Honda', 'Accord', 1998); console.log(auto instanceof Car); // expected output: true console.log(auto instanceof Object); // expected output: true
2. new
new 演算子を使用すると、開発者はユーザー定義のオブジェクト型やコンストラクター関数を持つ組み込みオブジェクト型のインスタンスを作成することができます。
function Car(make, model, year) { this.make = make; this.model = model; this.year = year; } const car1 = new Car('Eagle', 'Talon TSi', 1993); console.log(car1.make); // expected output: "Eagle"
3. delete
JavaScript の delete 演算子は、オブジェクトからプロパティを削除します。同じプロパティへの参照がそれ以上保持されていない場合は、自動的に解放されます。
const Employee = { firstname: 'John', lastname: 'Doe' }; console.log(Employee.firstname); // expected output: "John" delete Employee.firstname; console.log(Employee.firstname); // expected output: undefined
4. in
in 演算子は、指定されたプロパティが指定されたオブジェクトにある場合に true を返します。
const car = { make: 'Honda', model: 'Accord', year: 1998 }; console.log('make' in car); // expected output: true delete car.make; if ('make' in car === false) { car.make = 'Suzuki'; } console.log(car.make); // expected output: "Suzuki"
5. super
super キーワードは、オブジェクトの親の関数を呼び出すために使用できます。
super.prop および super[expr] 式は、class とオブジェクトリテラルの両方におけるあらゆるメソッド定義で有効です。
super([arguments]); // 親コンストラクターを呼び出します。 super.functionOnParent([arguments]);
6. プロパティアクセッサー
プロパティアクセサーはオブジェクトのプロパティへのアクセスを提供するもので、ドット表記法またはブラケット表記法を使用します。
const person1 = {}; person1['firstname'] = 'Mario'; person1['lastname'] = 'Rossi'; console.log(person1.firstname); // expected output: "Mario" const person2 = { firstname: 'John', lastname: 'Doe' }; console.log(person2['lastname']); // expected output: "Doe"
7. オブジェクトリテラル
参考:オブジェクト初期化子 - JavaScript | MDN
参考:JavaScript オブジェクトの基本 - ウェブ開発を学ぶ | MDN
参考:オブジェクトでの作業 - JavaScript | MDN
オブジェクトは new Object()、Object.create()、リテラル表記法 (初期化子表記法) を使用して初期化されます。オブジェクト初期化子はオブジェクトのプロパティ名と関連した値のゼロ以上のペアのリストで、中括弧 ({}) で囲まれます。
const object1 = { a: 'foo', b: 42, c: {} }; console.log(object1.a); // expected output: "foo" const a = 'foo'; const b = 42; const c = {}; const object2 = { a: a, b: b, c: c }; console.log(object2.b); // expected output: 42 const object3 = { a, b, c }; console.log(object3.a); // expected output: "foo"
7. KnotTextでのECMAScriptの分類
参考:MDN Web DocsでのECMAScriptの分類
7-1. グローバルオブジェクトのプロパティ(JavaScriptの実行環境がWebブラウザーの場合)
7-1-1. グローバルオブジェクトの値プロパティ
- window.globalThis
- window.Infinity
- window.NaN
- window.undefined
7-1-2. グローバルオブジェクトの関数プロパティ
- window.isFinite()
- window.isNaN()
- window.parseFloat()
- window.parseInt()
- URIハンドリング関数
- window.decodeURI()
- window.decodeURIComponent()
- window.encodeURI()
- window.encodeURIComponent()
7-1-3. グローバルオブジェクトのコンストラクタープロパティ
コンストラクターとは、「オブジェクトを作成する能力を持たせた」関数で、「new」演算子によってオブジェクトインスタンスを作成することができる。
プリミティブデータ型のラッパーオブジェクト | |
---|---|
真偽値 | window.Boolean() |
文字列 | window.String() |
数値 | window.Number() |
window.BigInt() | |
シンボル | window.Symbol() |
オブジェクトのためのオブジェクト |
---|
window.Object() |
関数のためのオブジェクト | |
---|---|
window.Function() | |
関数のより高度なオブジェクト | window.GeneratorFunction() |
window.Generator() | |
window.AsyncFunction() | |
window.Promise() |
配列のためのオブジェクト | ||
---|---|---|
window.Array() | ||
配列のより高度なオブジェクト | window.ArrayBuffer() | |
window.DataView() | ||
window.SharedArrayBuffer() | ||
型付き配列のためのオブジェクト | window.Int8Array() | window.Int16Array() |
window.Uint8Array() | window.Uint16Array() | |
window.Uint8ClampedArray() | ||
window.Int32Array() | window.BigInt64Array() | |
window.Uint32Array() | window.BigUint64Array() | |
window.Float32Array() | window.Float64Array() |
日付・時刻のためのオブジェクト |
---|
window.Date() |
正規表現のためのオブジェクト |
---|
window.RegExp() |
エラーのためのオブジェクト | |
---|---|
window.Error() | window.EvalError() |
AggregateError | |
InternalError | |
window.RangeError() | |
window.ReferenceError() | |
window.SyntaxError() | |
window.TypeError() | |
URIError |
Managing Memory |
---|
window.WeakRef() |
Reflection |
---|
window.Proxy() |
7-1-4. グローバルオブジェクトのその他のプロパティ
Atomics |
---|
window.Atomics() |
JSON |
---|
window.JSON() |
Math |
---|
window.Math() |
Reflect |
---|
window.Reflect() |
7-2. ECMAScriptの演算子「計算・論理・代入」
7-2-1. ECMAScriptの演算子「計算」
7-2-2. ECMAScriptの演算子「論理」
7-2-3. ECMAScriptの演算子「代入」
7-3. ECMAScriptのステートメント
block ステートメント | ブロックを作る | |
---|---|---|
if ステートメント(else) | 条件を作る | |
イテレーションステートメント | do-while ステートメント | 必ず1回は実行されるwhileステートメント |
while ステートメント | 条件を満たすまで繰り返す | |
for ステートメント | 指定した回数まで繰り返す | |
for-in ステートメント | オブジェクトのためのforステートメント | |
for-of ステートメント | 配列状のオブジェクト全般のためのforステートメント | |
for-await-of ステートメント | Promiseオブジェクトのためのfor-ofステートメント | |
continue ステートメント | 繰り返しの処理をスキップして次の繰り返しへ進む | |
break ステートメント | 繰り返し・ラベル・switchステートメントの処理を中断してステートメントから抜け出す | |
switch ステートメント(case, default) | 条件に一致するcaseを実行する | |
throw ステートメント | 関数の中で例外を発生させ、catchが存在すればcatchに移行する。 | |
try ステートメント(catch, finally) | catchのためのfinallyでtryする? |
7-4. オブジェクトのためのパーツ
instanceof | オブジェクトが自身のプロトタイプにコンストラクタのprototype プロパティを持っているか判別する |
---|---|
new | new 演算子を使用すると、開発者はユーザー定義のオブジェクト型やコンストラクタ関数を持つ組み込みオブジェクト型のインスタンスを作成することができる |
delete | オブジェクトからプロパティを削除する |
in | 指定されたプロパティが指定されたオブジェクトにある場合にtrueを返す |
super | オブジェクトの親の関数を呼び出すために使用できる |
プロパティアクセッサー | オブジェクトのプロパティにアクセスする2種類の方法(ドット表記法、ブラケット表記法) |
オブジェクトリテラル | Object initializerによって作成するオブジェクト |
7-5. 配列のためのパーツ
配列リテラル | [a, b] = [1, 2] 代入 = [] 配列をつくる 配列リテラル 「配列」オブジェクト 配列初期化 Array()でも可 |
---|
7-6. 関数のためのパーツ
function | キーワード いわゆるexpression 関数を作成する |
---|---|
return ステートメント | |
this | [関数] キーワード |
function* | [ジェネレータオブジェクトを返す、ジェネレータ関数を定義] |
yield(yield*) | ジェネレータ関数 キーワード |
async function | キーワード 非同期関数 |
await | Promiseオブジェクト 非同期関数内のみ |
class(extends) | いわゆるexpression ECMAScript 2015~のclass定義 |
7-7. その他のパーツ
use strictモード | |
---|---|
,(comma) 演算子 | それぞれの演算対象を(左から右に)評価し、最後のオペランドの値を返します。これにより、複数の式が評価される複合式を作成することができ、複合式の最終値はそのメンバー式の一番右端の値となります。これは、for ループに複数の引数を提供する場合によく使用されます。 |
typeof 演算子 | 対象の値のデータ型を返す |
void 演算子 | 必ずundefinedを返す |
?.(Optional chaining) 演算子 | 接続されたオブジェクトチェーンの深くに位置するプロパティの値を、チェーン内の各参照が正しいかどうかを明示的に確認せずに読み込むことを可能にします。 |
labeled ステートメント | ラベル付け? |
import | |
export |