JavaScriptのプロパティについて

JavaScriptのプロパティについて

JavaScriptにおけるプロパティについて

JavaScriptにおけるプロパティは、オブジェクトの一部として格納されるデータのことを指します。プロパティにはキー(名前)と値があり、オブジェクト内でデータを保存および操作する基本的な仕組みです。このページでは、JavaScriptのプロパティについて詳しく解説し、具体例を交えて説明します。

プロパティの定義

JavaScriptのプロパティは、オブジェクトの「キー」と「値」のペアです。以下の例で基本的なプロパティの定義を示します。


const person = {
    name: "太郎",
    age: 25
};
    

この例では、personオブジェクトにはnameプロパティ(値は"太郎")とageプロパティ(値は25)が含まれています。

プロパティの種類へ

プロパティの種類

JavaScriptには以下の種類のプロパティがあります。

  • データプロパティ: 値を保持するプロパティ。
  • アクセサプロパティ: 関数を使用して値を取得または設定するプロパティ。

データプロパティ

データプロパティは、最も一般的なプロパティです。以下の例を見てください。


const car = {
    brand: "Toyota",
    year: 2022
};
console.log(car.brand); // "Toyota"
    

この例では、carオブジェクトにbrandyearというデータプロパティがあります。

アクセサプロパティへ

アクセサプロパティ

アクセサプロパティは、getおよびsetキーワードを使用して定義されます。以下に例を示します。


const person = {
    firstName: "花子",
    lastName: "山田",
    get fullName() {
        return this.firstName + " " + this.lastName;
    },
    set fullName(name) {
        const parts = name.split(" ");
        this.firstName = parts[0];
        this.lastName = parts[1];
    }
};
person.fullName = "太郎 鈴木";
console.log(person.fullName); // "太郎 鈴木"
    

この例では、fullNameプロパティはgetsetを使用して動的に計算されています。

列挙可能なプロパティへ

列挙可能なプロパティ

プロパティは列挙可能かどうかの設定が可能です。for...inループやObject.keys()で列挙可能なプロパティのみが返されます。


const book = {
    title: "JavaScript入門",
    author: "佐藤",
    year: 2023
};
for (let key in book) {
    console.log(key); // "title", "author", "year"
}
console.log(Object.keys(book)); // ["title", "author", "year"]
    

デフォルトでは、すべてのプロパティは列挙可能です。

プロパティ属性へ

プロパティの属性

プロパティには以下のような属性があります。

  • writable: 値の変更が可能かどうか。
  • enumerable: 列挙可能かどうか。
  • configurable: 削除や再定義が可能かどうか。

プロパティの属性はObject.defineProperty()を使用して設定できます。


const obj = {};
Object.defineProperty(obj, "hidden", {
    value: "秘密",
    writable: false,
    enumerable: false,
    configurable: false
});
console.log(obj.hidden); // "秘密"
obj.hidden = "公開"; // エラー(strictモードの場合)
console.log(Object.keys(obj)); // 空の配列
    
まとめへ

まとめ

JavaScriptのプロパティはオブジェクトの中心的な概念であり、その使い方を理解することはJavaScriptプログラミングの基本です。データプロパティやアクセサプロパティを適切に使い分け、プロパティ属性を活用することで、より柔軟で効率的なコードを記述できます。

トップに戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です