JavaScript

The Object.prototype.toString() method in JavaScript is used to determine the type of a given value and returns a string that indicates the type of the object.

Object.prototype.toString() メソッド

 Object.prototype.toString()は、JavaScriptの標準オブジェクトであり、引数として渡された値の型を文字列で表現するメソッドです。

 例えば、以下のように使うことができます。


<script>
	const value = 42;
	console.log(Object.prototype.toString.call(value)); // [object Number]
</script>

 このコードでは、42 という数値を引数として toString()メソッドを呼び出しています。しかし、この場合に toString()メソッドを直接呼び出すと、期待した文字列が返ってきません。つまり、以下のコードはうまくいきません。


<script>
	console.log(value.toString()); // 42
</script>

 この理由は、JavaScriptでは、あらゆる値がオブジェクトであると見なされているためです。しかし、値の種類によって、それぞれのオブジェクトは異なる振る舞いをします。

 ここで、Object.prototype.toString()が役に立つのは、渡された値の型に基づいて正しい文字列を返すことです。例えば、以下のように使うことができます。


<script>
	console.log(Object.prototype.toString.call(""));           // [object String]
	console.log(Object.prototype.toString.call(42));           // [object Number]
	console.log(Object.prototype.toString.call(true));         // [object Boolean]
	console.log(Object.prototype.toString.call([]));           // [object Array]
	console.log(Object.prototype.toString.call({}));           // [object Object]
	console.log(Object.prototype.toString.call(function(){})); // [object Function]
</script>

 このように、Object.prototype.toString()は、渡された値の型を正確に判別することができます。また、toString()メソッドを直接呼び出すよりも、より正確な情報を提供することができます。ただし、注意点として、toString()メソッドを呼び出す際に、必ず call()メソッドを使用する必要があります。そうしないと、期待した結果が得られないことがあります。

 また、Object.protptype.toString()は、オブジェクトを判別する場合には、以下のように使うことができます。


<script>
	const obj = { key: "value" };
	console.log(Object.prototype.toString.call(obj)); // [object Object]
</script>

 この場合、オブジェクトを toString()メソッドに直接渡すことはできません。代わりに、call()メソッドを使用して、Object.prototype.toString()メソッドにオブジェクトを渡す必要があります。

 ただし、このような場合には、より便利な方法があります。つまり、JavaScriptのすべてのオブジェクトは、toString()メソッドを持っているため、次のように書くことができます。


<script>
	console.log(obj.toString()); // [object Object]
</script>

 ただし、注意点として、toString()メソッドは、オブジェクトごとに異なる結果を返すことがあります。つまり、Object.prototype.toString()と異なる文字列が返される場合があるため、注意が必要です。

 また、Object.prototype.toString()メソッドは、ブラウザー環境と Node.js環境の両方で動作します。ただし、ブラウザー環境では、特定のオブジェクトに対して、異なる結果を返す場合があります。具体的には、windowオブジェクトに対しては、[object Window]が返されます。

 このメソッドは、JavaScriptで値の型を正確に判別するために便利なツールです。しかし、オブジェクトを扱う際は、注意が必要な場合があるため、適切に使い分ける必要があります。