JavaScriptでデータの種類を判断する方法のまとめ

3078 ワード

typeof typeof用の比較的多い場合は、あるグローバル変数が不在であると判断し、あるページがグローバル変数を定義している場合です.もしあなたが次のように判断したら:

//haorooms     
if(haorooms!=undefined){
}//js   , "Uncaught ReferenceError: haorooms is not defined"
解決の方法は次のように書きます.

 if(typeof haorooms!=undefined){
 }
typeofを使ったら、間違えないようにします.これはtypeofの応用の一つです.
また、typeofはデータタイプの判断も可能です.以下のとおりです

var haorooms="string"; console.log(haorooms); //string
var haorooms=1; console.log(haorooms); //number
var haorooms=false; console.log(haorooms); //boolean
var haorooms; console.log(typeof haorooms); //undfined

var haorooms= null; console.log(typeof haorooms); //object
var haorooms = document; console.log(typeof haorooms); //object
var haorooms = []; console.log(haorooms); //object
var haorooms = function(){}; console.log(typeof haorooms) //function                 function  

明らかに、typeofについては、前の4つのタイプを除いて、null、オブジェクト、配列が戻ってくるのはすべてobjectタイプです.
instance ofは配列かどうかを判定します.

var haorooms=[];
console.log(haorooms instanceof Array) //  true 

constructor constructorとは、オブジェクトに戻るための構造関数です.各種データの種類を判断する方法:

console.log([].constructor == Array);
console.log({}.constructor == Object);
console.log("string".constructor == String);
console.log((123).constructor == Number);
console.log(true.constructor == Boolean);

function employee(name,job,born){
  this.name=name;
  this.job=job;
  this.born=born; }

var haorooms=new employee("Bill Gates","Engineer",1985); 
console.log(haorooms.constructor); //  function employee(name, jobtitle, born){this.name = name; this.jobtitle = job; this.born = born;}

harooms.co nstructorを出力することによって、constructorはオブジェクトに戻るための構造関数であることが分かります.
Object.prototype.toStringの前に述べたように、construct属性を使って物件の種類を判定することができます.Object.protype.toStringという方法について説明します.

Object.prototype.toString.apply({}) // "[object Object]"
Object.prototype.toString.apply([]) // "[object Array]"
Object.prototype.toString.apply(NaN)// "[object Number]"
Object.prototype.toString.apply(function(){}) // "[object Function]"
このような方法で変数の基本型を正確に判断できますが、自分のタイプであれば本当のタイプは分かりません.結果はそのまま「object Object」です.
他のjQueryにもタイプ判定の方法があります.

$.isWindow(window) // true
どうやって作ったのですか

core.js#479
isWindow: function( obj ) {
  return obj != null && obj == obj.window;
}
このようなObjectを開く:

var fakeWindow;
fakeWindow = {};
fakeWindow.window = fakeWindow;
$.isWindow(fakeWindow) // true
彼をだましたのです.
結び目はJavaScriptの中でタイプを正確に判断して、よく研究する時、本当に面倒くさいことです.状況によって判断式を設計するのはとても重要です.私達も一番簡潔な方法で正しいタイプを判断するべきです. isPrototypeOf この方法は、JavaScriptは多くの歴史的な風呂敷を持っている言語ですが、常に進歩しています.それを使う時、注意してください.多すぎる方法は両面の刃です.注意して使ってください.