JavaScript/Object/prototype
< JavaScript | Object
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__
)は互換性の観点で使用を避けることが推奨されます。