JavaScript/Object

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動
JavaScript > Objectオブジェクト

Objectオブジェクト[編集]

Object型は、StringやNumber等の他のオブジェクトの雛形として用意されている JavaScriptでは他のオブジェクトは、基本的にすべてのデータはObject型を継承している。

静的プロパティ[編集]

この節は書きかけです。この節を編集してくれる方を心からお待ちしています。

Object.length[編集]

Object.name[編集]

Object.prototype[編集]

静的メソッド[編集]

この節は書きかけです。この節を編集してくれる方を心からお待ちしています。

Object.assign()[編集]

Object.create()[編集]

Object.defineProperties()[編集]

Object.defineProperty()[編集]

Object.entries()[編集]

Object.freeze()[編集]

Object.fromEntries()[編集]

Object.getOwnPropertyDescriptor()[編集]

Object.getOwnPropertyDescriptors()[編集]

Object.getOwnPropertyNames()[編集]

Object.getOwnPropertySymbols()[編集]

Object.getPrototypeOf()[編集]

Object.is()[編集]

Object.isExtensible()[編集]

Object.isFrozen()[編集]

Object.isSealed()[編集]

Object.keys()[編集]

Object.preventExtensions()[編集]

Object.seal()[編集]

Object.setPrototypeOf()[編集]

Object.values()[編集]

インスタンスプロパティ[編集]

この節は書きかけです。この節を編集してくれる方を心からお待ちしています。

Object.length[編集]

Object.name[編集]

Object.prototype[編集]

インスタンスメソッド[編集]

この節は書きかけです。この節を編集してくれる方を心からお待ちしています。

Object.prototype.__defineGetter__()[編集]

Object.prototype.__defineSetter__()[編集]

Object.prototype.__lookupGetter__()[編集]

Object.prototype.__lookupSetter__()[編集]

Object.prototype.constructor()[編集]

Object.prototype.hasOwnProperty()[編集]

Object.prototype.isPrototypeOf()[編集]

Object.prototype.propertyIsEnumerable()[編集]

Object.prototype.toLocaleString()[編集]

Object.prototype.toString()[編集]

Object.prototype.valueOf()[編集]


Object.prototype.toString()[編集]

データを文字列化する。 データをどの様に文字列化するかは、そのオブジェクトごとに違うがObject型のtoStringがそのまま実行される場合にはそのデータのデータ型が何であるかを文字列で返す。

Object.prototype.toLocaleString()[編集]

基本的にtoStringと全く同じ動作を行う。 このメソッドは、ArrayやNumber、Date型のオブジェクトがtoLocaleStringを持っているのに対し、他のオブジェクトはこれを持っていないため、他の型でtoLocaleStringが呼び出される場合でもエラー出してプログラムの実行が止まらないための雛形として用意されている。 他のデータ型でtoLocaleStringを使うべき問題にあたった場合にそれぞれのデータ型でメソッドを定義してやればよい。

Object.prototype.hasOwnProperty(V)[編集]

オブジェクトが引数で渡したプロパティを自前で持っているかをチェックする。持っていない場合、および他のクラスから継承している場合はfalseを返す。

for~in文は通常、オブジェクトにプロパティやメソッドを追加したときにその違いが出る。 例えば次の様なオブジェクトを作成したとする。

Object.prototype.getBMI = function(){ return this[体重] / this[身長] ** 2 }
const girl ={
  身長: 158,
  体重: 49
};
for (const p in girl)
  console.log(p, ' : ', girl[p]); 
/*
 身長  :  158
 体重  :  49
 getBMI  :  ƒ (){ return this[体重] / this[身長] ** 2 }
 */

この様にすると結果として、「身長」、「体重」の他に「getBMI」のメソッドの中身も表示されてしまう。 それを禁止するために、親オブジェクトから取得したデータを無視するため次の様に記述する。

for (const p in girl)
  if (girl.hasOwnProperty(p))
    console.log(p, ' : ', girl[p]);

ちなみに、親オブジェクトも含めてそのプロパティを持っているかどうかを調べるにはin演算子を使用する。

if (p in girl) { /* ... */ }

Object.prototype.valueOf()[編集]

データの値をそのまま返す。 このメソッドは他のオブジェクトでそれぞれオーバーライドされるのを期待されて存在している。 そのため、単体としてそれほどの意味は無い。 プリミティブ型のラッパーオブジェクトから元のプリミティブを得る時に使われる。

Object.prototype.isPrototypeOf(V)[編集]

引数で与えたオブジェクトが、自分の子孫ノードであるかどうかをチェックする。

function Foo(){}
function Bar(){}
function Baz(){}
Bar.prototype = new Foo();
Baz.prototype = new Bar();
console.log(Foo.prototype.isPrototypeOf(new Bar()));  // true
console.log(Foo.prototype.isPrototypeOf(new Baz()));  // true

Object.prototype.propertyIsEnumerable(V)[編集]

引数で指定したプロパティがオブジェクト自身のプロパティかつ、for~in文で列挙可能なものであるのかをチェックする。 プロパティでなければfalseを、列挙可能ならtrueを、不可能ならfalseを返す。