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 つのプロパティを追加しています:

例

person=new Object(); person.firstname="John"; person.lastname="Doe"; person.age=50; person.eyecolor="blue";

試してみる »

オブジェクトリテラルを使用してオブジェクトを作成することもできます。構文は次のとおりです:

var myObject = {
    key1: value1,
    key2: value2,
    // 更多键值对...
};
  • myObject:変数名。オブジェクト全体を参照するために使用します。
  • key1, key2:プロパティ名。文字列または識別子を指定できます。
  • value1, value2:プロパティの値。数値、文字列、ブール値、関数、配列、さらには他のオブジェクトを含む任意の JavaScript データ型を指定できます。

例

var person = {
    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

例

person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};

試してみる »

JavaScript オブジェクトはname:valueコレクションです。



オブジェクトコンストラクタを使用する

この例では、関数を使用してオブジェクトを構築します:

例

function person(firstname,lastname,age,eyecolor) { this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; }

試してみる »

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 プロパティに代入します。

これで試してみてください:

myMother.changeName("Doe");

試してみる »

JavaScript クラス

JavaScript はオブジェクト指向言語ですが、JavaScript はクラスを使用しません。

JavaScript では、クラスを作成したり、クラスを使用してオブジェクトを作成したりすることはありません(他のオブジェクト指向言語のように)。

JavaScript はクラスベースではなく、prototype ベースです。


JavaScript for...in ループ

JavaScript の for...in ステートメントは、オブジェクトのプロパティをループします。

構文

for (variable in object)
{
    执行的代码……
}

注意:for...in ループ内のコードブロックは、各プロパティに対して 1 回実行されます。

例

オブジェクトのプロパティをループします:

例

var person={fname:"John",lname:"Doe",age:25}; for (x in person) { txt=txt + person[x]; }

試してみる »


JavaScript のオブジェクトは変更可能です

オブジェクトは変更可能であり、参照によって渡されます。

次の例の person オブジェクトはコピーを作成しません:

var x = person;  // 不会创建 person 的副本,是引用

x を変更すると、person のプロパティも変更されます:

例

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"} var x = person; x.age = 10; //x.age と person.age の両方が変更されます

試してみる »
その他の拡張