オブジェクトのtoStringメソッドを呼び出し(コンテキストの変更のため)と共に呼び出すと、文字列が返されます。この文字列には、呼び出すために与えられた値のデータ型が含まれます。JavaScript:データ型の検出に "Object.prototype.toString.call(obj)"を使用できますか?
var obj = {};
var field = [];
var str = 'abc';
var num = 3;
var reg = /.*/;
var bool = true;
var notANumber = NaN;
var undef = undefined;
console.log(Object.prototype.toString.call(obj)); // [object Object]
console.log(Object.prototype.toString.call(field)); // [object Array]
console.log(Object.prototype.toString.call(str)); // [object String]
console.log(Object.prototype.toString.call(num)); // [object Number]
console.log(Object.prototype.toString.call(reg)); // [object RegExp]
console.log(Object.prototype.toString.call(bool)); // [object Boolean]
console.log(Object.prototype.toString.call(notANumber)); // [object Number]
console.log(Object.prototype.toString.call(undefined)); // [object Undefined]
私は私の工夫から何を言うことができます。通常のJavaScriptのすごみ横(NaNの数である)、正常に動作するようです。
は今、私は自分自身に尋ねる:私はなど、いくつかの.split(/ \ sの/)で機能させる場合は、文字列としてデータ型を返す、私はタイプの検出のためにそれを使用することができます。
しかし、私は信用します:
私はプログラマがそのようにObject.prototype.toString.callは、構築し使用することを見たことがありません。
う機能が期待通りの仕事、上述のように:彼らは私の質問がある
typeofを使用したり、特定の方法を探して...
?ブラウザでJavaScriptの実装が異なるため、失敗しますか?または何か他の理由のために失敗しますか?
'regex'は、異なるすぎる – Alnitak
' typeof'と 'Object.prototype.toString.call()'の違いは何ですか?両方の結果をあなたの答えに追加できますか? – Bill