0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

POJO(Plain Old JavaScript Object)の特徴

Posted at

POJO (Plain Old JavaScript Object) は、JavaScriptにおけるシンプルなオブジェクトのことを指します。Javaや他の言語で使われるPOJOという用語から派生しており、特にフレームワークや特別な機能を持たない「純粋な」オブジェクトを指します。以下はその特徴です:


1. シンプルなオブジェクトリテラルで記述される

POJOは、JavaScriptのオブジェクトリテラル構文 {} を用いて作られます。特定のプロトタイプやクラスに依存せず、標準的なJavaScriptのオブジェクトとして扱われます。

const person = { name: "Alice", age: 30 };

2. 特別な機能やメソッドを持たない

POJOは、追加の機能やメソッドを持たない単純なデータ構造です。通常はキーと値のペア(プロパティ)だけで構成されます。


3. プロトタイプチェーンに依存しない

POJOは、特定のカスタムプロトタイプ(例えば、クラスベースのオブジェクト)に依存しません。JavaScriptの標準的な Object.prototype を継承しています。

const obj = {}; // これはPOJO console.log(Object.getPrototypeOf(obj) === Object.prototype); // true

4. シリアライズしやすい

POJOはJSON形式で簡単にシリアライズ(文字列化)できます。これにより、データを保存したり、APIを通じて送受信するのに適しています。

const data = {
  id: 1,
  title: "Example"
};
const json = JSON.stringify(data);
console.log(json); // '{"id":1,"title":"Example"}'

5. クラスや特殊な構文を使用しない

クラスや関数コンストラクター、getter/setter、Symbol などの特殊な構文を使用しません。純粋にデータを保持する目的で使われます。


6. 動的に拡張可能

POJOは動的にプロパティを追加したり変更したりできます。

const user = { name: "John" };
user.age = 25; // プロパティを追加
user.name = "Jane"; // プロパティを変更
console.log(user);
// { name: "Jane", age: 25 }

注意点

  • POJOではないオブジェクトの例
    • クラスやコンストラクター関数を使って生成されたオブジェクト。
    • 特定のフレームワークで拡張されたオブジェクト(例えば、Vue のリアクティブオブジェクト)。
    • 特殊なビルトインオブジェクト(DateMap など)。

POJOの利点は、そのシンプルさと柔軟性です。特定のライブラリやフレームワークに依存しないため、直感的に使いやすく、データの保存や操作が簡単です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?