JavaScript でオブジェクトを作成する方法はかなりあります。
おそらく、これが JavaScript でオブジェクトを作成する最も速くて簡単な方法です。これはオブジェクト初期化子とも呼ばれ、中括弧 ({}) で囲まれたオブジェクトのプロパティ名と関連する値の 0 個以上のペアのカンマ区切りのリストです。
const newObject = {} // Simply create a new empty object const newObject = { someKey: "someValue", anotherKey: "anotherValue" }
オブジェクト値は、プリミティブ データ型または他のオブジェクトのいずれかになります。
組み込みの Object コンストラクターを使用してオブジェクトを作成できます。
渡された値が null または未定義の場合、または値が渡されなかった場合は、空のオブジェクトを作成して返します。
値がすでにオブジェクトである場合は、同じ値を返します。
// below options create and return an empty object const ObjWithNoValue = new Object(); const ObjWithUndefined = new Object(undefined); const ObjWithNull = new Object(null); const newObject = { someKey: "someValue", anotherKey: "anotherValue" } const sameObject = new Object(someObject); sameObject['andAnotherKey'] = "one another value"; sameObject === newObject; // both objects are same.
このメソッドを使用すると、特定のプロトタイプを使用して新しいオブジェクトを作成できます。このアプローチにより、新しいオブジェクトがプロトタイプからプロパティとメソッドを継承できるようになり、継承のような動作が容易になります。
const person = { greet: function () { console.log(`Hello ${this.name || 'Guest'}`); } } const driver = Object.create(person); driver.name = 'John'; driver.greet(); // Hello John
ES6 より前は、これは複数の同様のオブジェクトを作成する一般的な方法でした。コンストラクターは単なる関数であり、新しいキーワードを使用してオブジェクトを作成できます。
「new」キーワードを使用してオブジェクトを作成するときは、関数名の最初の文字を大文字にすることをお勧めします。
function Person(name, location) { this.name = name; this.location = location; greet() { console.log(`Hello, I am ${this.name || 'Guest'} from ${this.location || 'Earth'}`); } } const alex = new Person('Alex'); alex.greet(); // Hello, I am Alex from Earth const sam = new Person('Sam Anderson', 'Switzerland'); sam.greet(); // Hello, I am Sam Anderson from Switzerland
より現代的なアプローチは、プロパティとメソッドを初期化するコンストラクター関数を持つクラスを使用して、他の OOP プログラミング言語と同じようにオブジェクトを作成するのに役立ちます。
class Person { constructor(name, location) { this.name = name || 'Guest'; this.location = location || 'Earth'; } greet() { console.log(`Hello, I am ${this.name} from ${this.location}`); } } const santa = new Person('Santa'); santa.greet(); // Hello, I am Santa from Earth
参考文献:
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3