JavaScript オブジェクト
JavaScript のすべてのものはオブジェクトです:文字列、数値、配列、関数...
さらに、JavaScript ではカスタムオブジェクトを定義できます。
すべてのものはオブジェクトです
JavaScript は String、Date、Array など、多数の組み込みオブジェクトを提供します。 オブジェクトは、プロパティとメソッドを持つ特別なデータ型にすぎません。
- ブール型はオブジェクトにできます。
- 数値型はオブジェクトにできます。
- 文字列もオブジェクトにできます。
- 日付はオブジェクトです。
- Math(数学)と正規表現もオブジェクトです。
- 配列はオブジェクトです。
- 関数でさえオブジェクトにできます。
JavaScript オブジェクト
オブジェクトは特別なデータにすぎません。オブジェクトには次のものがあります。プロパティとメソッド。
オブジェクトのプロパティへのアクセス
プロパティはオブジェクトに関連する値です。
オブジェクトのプロパティにアクセスする構文は次のとおりです:
objectName.propertyName
この例では、String オブジェクトの length プロパティを使用して文字列の長さを取得しています:
var message="Hello World!"; var x=message.length;
上記のコードを実行すると、x の値は次のようになります:
12
オブジェクトのメソッドへのアクセス
メソッドは、オブジェクトに対して実行できるアクションです。
次の構文でメソッドを呼び出すことができます:
objectName.methodName()
この例では、String オブジェクトの toUpperCase() メソッドを使用してテキストを大文字に変換しています:
var message="Hello world!"; var x=message.toUpperCase();
上記のコードを実行すると、x の値は次のようになります:
HELLO WORLD!
JavaScript オブジェクトの作成
JavaScript を使用すると、独自のオブジェクトを定義して作成できます。
新しいオブジェクトを作成するには、2 つの異なる方法があります:
- Object を使用してオブジェクトのインスタンスを定義および作成します。
- 関数を使用してオブジェクトを定義し、新しいオブジェクトインスタンスを作成します。
Object を使用する
JavaScript では、ほとんどすべてのオブジェクトは Object 型のインスタンスであり、Object.prototype からプロパティとメソッドを継承します。
Object コンストラクタはオブジェクトラッパーを作成します。
Object コンストラクタは、指定された引数に基づいてオブジェクトを作成します。具体的には次の場合があります:
- 指定された値が null または undefined の場合、空のオブジェクトを作成して返します。
- プリミティブ型の値が渡された場合は、そのラッパー型のオブジェクトを構築します。
- 参照型の値が渡された場合、その値がそのまま返され、それらをコピーした変数は元のオブジェクトと同じ参照アドレスを保持します。
- コンストラクタ形式以外で呼び出された場合、Object は new Object() と同じ動作をします。
構文形式:
// 以构造函数形式来调用 new Object([value])
value には任意の値を指定できます。
次の例では、Object を使用してブールオブジェクトを生成します:
// 等价于 o = new Boolean(true); var o = new Object(true);
この例では、オブジェクトの新しいインスタンスを作成し、それに 4 つのプロパティを追加しています:
例
試してみる »
オブジェクトリテラルを使用してオブジェクトを作成することもできます。構文は次のとおりです:
var myObject = {
key1: value1,
key2: value2,
// 更多键值对...
};
- myObject:変数名。オブジェクト全体を参照するために使用します。
- key1, key2:プロパティ名。文字列または識別子を指定できます。
- value1, value2:プロパティの値。数値、文字列、ブール値、関数、配列、さらには他のオブジェクトを含む任意の JavaScript データ型を指定できます。
例
firstName: 'John',
lastName: 'Doe',
age: 30,
isStudent: false,
greet: function() {
console.log('Hello, I am ' + this.firstName + ' ' + this.lastName);
}
};
console.log(person.firstName); // 出力: John
person.greet(); // 出力: Hello, I am John Doe
JavaScript オブジェクトはname:valueコレクションです。
オブジェクトコンストラクタを使用する
この例では、関数を使用してオブジェクトを構築します:
例
試してみる »
JavaScript では、this は通常、実行中の関数自体、またはその関数が属するオブジェクト(実行時)を指します。
JavaScript オブジェクトインスタンスの作成
オブジェクトコンストラクタがあれば、次のように新しいオブジェクトインスタンスを作成できます:
var myFather=new person("John","Doe",50,"blue");
var myMother=new person("Sally","Rally",48,"green");
JavaScript オブジェクトにプロパティを追加する
オブジェクトに値を代入することで、既存のオブジェクトに新しいプロパティを追加できます:
person オブジェクトが既に存在すると仮定します。次の新しいプロパティを追加できます:firstname、lastname、age、eyecolor:
person.firstname="John"; person.lastname="Doe"; person.age=30; person.eyecolor="blue"; x=person.firstname;
上記のコードを実行すると、x の値は次のようになります:
John
JavaScript オブジェクトにメソッドを追加する
メソッドは、オブジェクトに付加された関数にすぎません。
コンストラクタ関数の内部でオブジェクトのメソッドを定義します:
function person(firstname,lastname,age,eyecolor)
{
this.firstname=firstname;
this.lastname=lastname;
this.age=age;
this.eyecolor=eyecolor;
this.changeName=changeName;
function changeName(name)
{
this.lastname=name;
}
}
changeName() 関数は name の値を person の lastname プロパティに代入します。
JavaScript クラス
JavaScript はオブジェクト指向言語ですが、JavaScript はクラスを使用しません。
JavaScript では、クラスを作成したり、クラスを使用してオブジェクトを作成したりすることはありません(他のオブジェクト指向言語のように)。
JavaScript はクラスベースではなく、prototype ベースです。
JavaScript for...in ループ
JavaScript の for...in ステートメントは、オブジェクトのプロパティをループします。
構文
for (variable in object)
{
执行的代码……
}
注意:for...in ループ内のコードブロックは、各プロパティに対して 1 回実行されます。
例
オブジェクトのプロパティをループします:
JavaScript のオブジェクトは変更可能です
オブジェクトは変更可能であり、参照によって渡されます。
次の例の person オブジェクトはコピーを作成しません:
var x = person; // 不会创建 person 的副本,是引用
x を変更すると、person のプロパティも変更されます:
例
試してみる »