TECH I.S.

JavaScript ES5 オブジェクト メソッド

ECMAScript 5 (2009) では、JavaScript に多くの新しいオブジェクト メソッドが追加されました。


オブジェクトの管理

// 既存のオブジェクトをプロトタイプとして使用してオブジェクトを作成する Object.create() // オブジェクトのプロパティの追加または変更 Object.defineProperty(object, property, descriptor) // オブジェクトのプロパティの追加または変更 Object.defineProperties(object, descriptors) // プロパティへのアクセス Object.getOwnPropertyDescriptor(object, property) // すべてのプロパティを配列として返します Object.getOwnPropertyNames(object) // プロトタイプへのアクセス Object.getPrototypeOf(object) // 列挙可能なプロパティを配列として返します Object.keys(object)

オブジェクトの保護

// オブジェクトにプロパティを追加できないようにします Object.preventExtensions(object) // プロパティをオブジェクトに追加できる場合は true を返します Object.isExtensible(object) // オブジェクトのプロパティ (値ではない) の変更を防止します Object.seal(object) // オブジェクトがシールされている場合は true を返します Object.isSealed(object) // オブジェクトへの変更を禁止します Object.freeze(object) // オブジェクトが凍結されている場合は true を返します Object.isFrozen(object)

プロパティ値の変更

構文

Object.defineProperty(object, property, {value : <em>value</em>})

この例では、プロパティ値を変更します。

const person = {   firstName: "John",   lastName : "Doe",   language : "EN" }; // プロパティを変更する Object.defineProperty(person, "language", {value : "NO"});

自分で試してみる»



メタデータの変更

ES5 では、次のプロパティ メタデータを変更できます。
writable : true      // プロパティ値は変更可能です enumerable : true    // プロパティを列挙できる configurable : true  // プロパティは再構成可能です

ES5 では、次のプロパティ メタデータも変更できます。

writable : false     // プロパティ値は変更できません enumerable : false   // プロパティを列挙できません configurable : false // プロパティは再構成できません

ES5 では、ゲッターとセッターを変更できます。

// ゲッターの定義 get: function() { return language } // セッターの定義 set: function(value) { language = value }

この例では、言語を読み取り専用にします。

Object.defineProperty(person, "language", {writable:false});

次の例では、言語を列挙できなくします。

Object.defineProperty(person, "language", {enumerable:false});



すべてのプロパティの一覧表示

この例では、オブジェクトのすべてのプロパティを一覧表示します。

const person = {   firstName: "John",   lastName : "Doe",   language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.getOwnPropertyNames(person);  // プロパティの配列を返します

自分で試してみる»


列挙可能なプロパティの一覧表示

この例では、オブジェクトの列挙可能なプロパティのみを一覧表示します。

const person = {   firstName: "John",   lastName : "Doe",   language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.keys(person);  // 列挙可能なプロパティの配列を返します。

自分で試してみる»


プロパティの追加

この例では、オブジェクトに新しいプロパティを追加します。

// オブジェクトを作成します。 const person = {   firstName: "John",   lastName : "Doe",   language : "EN" }; // プロパティを追加する Object.defineProperty(person, "year", {value:"2008"});

自分で試してみる»


ゲッターとセッターの追加

Object.defineProperty()メソッドを使用して、Getter と Setter を追加することもできます。

//オブジェクトを作成する const person = {firstName:"John", lastName:"Doe"}; // ゲッターを定義する Object.defineProperty(person, "fullName", {   get: function () {return this.firstName + " " + this.lastName;} });

自分で試してみる»


反例

// オブジェクトの定義 const obj = {counter:0}; // セッターを定義する Object.defineProperty(obj, "reset", {   get : function () {this.counter = 0;} }); Object.defineProperty(obj, "increment", {   get : function () {this.counter++;} }); Object.defineProperty(obj, "decrement", {   get : function () {this.counter--;} }); Object.defineProperty(obj, "add", {   set : function (value) {this.counter += value;} }); Object.defineProperty(obj, "subtract", {   set : function (i) {this.counter -= i;} }); // カウンターを使って遊んでみましょう obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement;

自分で試してみる»



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細