ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript でのオブジェクトの作成: クロージャ、プロトタイプ、ESlasses

JavaScript でのオブジェクトの作成: クロージャ、プロトタイプ、ESlasses

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-04 12:13:34871ブラウズ

Creating Objects in JavaScript: Closures, Prototypes, and ESlasses

JavaScript では、オブジェクトを作成する方法がいくつかあります。各方法には独自の利点と使用例があります。クロージャ、プロトタイプ、ES6 クラスという 3 つの一般的なメソッドを例とともに説明します。

1. クロージャーの使用

クロージャーは、それが作成された環境を記憶する関数です。これにより、関数内にデータをカプセル化することができます。

function createPerson(name) {
    let age = 0;

    return {
        getAge: function() {
            return age;
        },
        growUp: function() {
            age++;
        }
    };
}

const person1 = createPerson("Alice");
console.log(person1.getAge()); // Output: 0
person1.growUp();
console.log(person1.getAge()); // Output: 1

2. プロトタイプの使用

プロトタイプを使用すると、共有のプロパティとメソッドを持つオブジェクトを作成できます。

function Person(name) {
    this.name = name;
}

Person.prototype.getAge = function() {
    return this.age || 0;
};

Person.prototype.growUp = function() {
    if (!this.age) {
        this.age = 1;
    } else {
        this.age++;
    }
};

const person2 = new Person("Bob");
console.log(person2.getAge()); // Output: 0
person2.growUp();
console.log(person2.getAge()); // Output: 1

3. ES6 クラスの使用

ES6 クラスは、より伝統的なクラスベースの構文を提供し、理解しやすく、使いやすくなっています。

class Person {
    constructor(name) {
        this.name = name;
        this.age = 0;
    }

    getAge() {
        return this.age;
    }

    growUp() {
        this.age++;
    }
}

const person3 = new Person("Charlie");
console.log(person3.getAge()); // Output: 0
person3.growUp();
console.log(person3.getAge()); // Output: 1

JavaScript でオブジェクトを作成するための 3 つの方法 (クロージャ、プロトタイプ、ES6 クラス) を検討しました。各方法には独自の長所と使用例があります。

  • クロージャは、関数内にデータをカプセル化するのに役立ちます。
  • プロトタイプ を使用すると、複数のオブジェクト間でプロパティとメソッドを共有できます。
  • ES6 クラス は、より伝統的なクラスベースの構文を提供し、理解しやすく、使いやすくなっています。

以上がJavaScript でのオブジェクトの作成: クロージャ、プロトタイプ、ESlassesの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。