Object.prototype

編集

Object.prototype は、すべての JavaScript オブジェクトが継承する基本的なオブジェクトであり、オブジェクトのデフォルトのプロパティやメソッドが定義されています。このプロトタイプは、新しく作成されたオブジェクトのデフォルトのプロトタイプチェーンの最上位に位置しています。

特徴

編集
  • すべてのオブジェクトは暗黙的に Object.prototype を継承します(明示的にプロトタイプチェーンを変更しない限り)。
  • Object.prototype には基本的なユーティリティメソッドやプロパティが含まれています。

プロパティ

編集

以下は、Object.prototype が持つプロパティの一覧です:

メソッド

編集

以下は、Object.prototype によって提供されるメソッドの一覧です:

Object.prototype.__defineGetter__()

編集

非推奨: 代わりに Object.defineProperty() の使用を推奨します。

プロパティの取得時に呼び出される関数を定義します。

構文
obj.__defineGetter__(prop, func)
パラメータ
  • prop: プロパティ名を表す文字列
  • func: ゲッター関数
const obj = {};
obj.__defineGetter__('value', function() {
    return 'getter called';
});
console.log(obj.value); // "getter called"

Object.prototype.__defineSetter__()

編集

非推奨: 代わりに Object.defineProperty() の使用を推奨します。

プロパティの設定時に呼び出される関数を定義します。

構文
obj.__defineSetter__(prop, func)
パラメータ
  • prop: プロパティ名を表す文字列
  • func: セッター関数
const obj = {};
obj.__defineSetter__('value', function(val) {
    console.log('setter called with:', val);
});
obj.value = 42; // "setter called with: 42"

Object.prototype.__lookupGetter__()

編集

非推奨: 代わりに Object.getOwnPropertyDescriptor() の使用を推奨します。

指定されたプロパティのゲッター関数を返します。

構文
obj.__lookupGetter__(prop)
パラメータ
  • prop: プロパティ名を表す文字列
戻り値
  • ゲッター関数、または undefined

Object.prototype.__lookupSetter__()

編集

非推奨: 代わりに Object.getOwnPropertyDescriptor() の使用を推奨します。

指定されたプロパティのセッター関数を返します。

構文
obj.__lookupSetter__(prop)
パラメータ
  • prop: プロパティ名を表す文字列
戻り値
  • セッター関数、または undefined

Object.prototype.constructor()

編集

オブジェクトのコンストラクタ関数への参照を保持します。

const arr = [];
console.log(arr.constructor === Array); // true

const num = new Number(123);
console.log(num.constructor === Number); // true

Object.prototype.hasOwnProperty()

編集

オブジェクトが指定されたプロパティを自身のプロパティとして持っているかを判定します。

構文
obj.hasOwnProperty(prop)
パラメータ
  • prop: 検査するプロパティ名
戻り値
  • プロパティを持っている場合は true、そうでない場合は false
const obj = { a: 1 };
console.log(obj.hasOwnProperty('a')); // true
console.log(obj.hasOwnProperty('toString')); // false

Object.prototype.isPrototypeOf()

編集

あるオブジェクトが別のオブジェクトのプロトタイプチェーン上に存在するかを判定します。

構文
prototypeObj.isPrototypeOf(object)
パラメータ
  • object: 検査対象のオブジェクト
戻り値
  • プロトタイプチェーン上に存在する場合は true、そうでない場合は false
function Animal() {}
function Dog() {}
Dog.prototype = Object.create(Animal.prototype);

const dog = new Dog();
console.log(Animal.prototype.isPrototypeOf(dog)); // true

Object.prototype.propertyIsEnumerable()

編集

指定されたプロパティが列挙可能かどうかを判定します。

構文
obj.propertyIsEnumerable(prop)
パラメータ
  • prop: 検査するプロパティ名
戻り値
  • プロパティが列挙可能な場合は true、そうでない場合は false
const obj = { a: 1 };
Object.defineProperty(obj, 'b', { value: 2, enumerable: false });
console.log(obj.propertyIsEnumerable('a')); // true
console.log(obj.propertyIsEnumerable('b')); // false

Object.prototype.toLocaleString()

編集

オブジェクトを、実行環境のロケールに応じた文字列表現に変換します。

構文
obj.toLocaleString()
戻り値
  • オブジェクトのローカライズされた文字列表現
const date = new Date();
console.log(date.toLocaleString()); // ロケールに応じた日付文字列

Object.prototype.toString()

編集

オブジェクトを文字列表現に変換します。

構文
obj.toString()
戻り値
  • オブジェクトの文字列表現
const obj = { a: 1 };
console.log(obj.toString()); // "[object Object]"

const arr = [1, 2, 3];
console.log(arr.toString()); // "1,2,3"

Object.prototype.valueOf()

編集

オブジェクトのプリミティブ値を返します。

構文
obj.valueOf()
戻り値
  • オブジェクトのプリミティブ値
const num = new Number(123);
console.log(num.valueOf()); // 123

const str = new String("hello");
console.log(str.valueOf()); // "hello"

注意点

編集
  • プロトタイプチェーンを操作する際、Object.prototype を変更することは予期しない副作用を引き起こす可能性があるため、慎重に行う必要があります。
  • 非標準のプロパティ(例: __proto__)は互換性の観点で使用を避けることが推奨されます。

参考

編集