JavaScriptでデータ型を判定する方法のまとめ

高洛峰
リリース: 2017-01-14 10:19:19
オリジナル
1050 人が閲覧しました

typeof
typeof は、ページがグローバル変数を定義しているかどうかを判断するためによく使用されます。次のような判断をした場合:

//haorooms是全局变量
if(haorooms!=undefined){
}//js会报错,说"Uncaught ReferenceError: haorooms is not defined"
ログイン後にコピー

解決策は次のように書くことです:

if(typeof haorooms!=undefined){
}
ログイン後にコピー

typeof を使用した後は、エラーは発生しません!これは typeof の応用の 1 つです!

さらに、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、および array はすべてのオブジェクト タイプを返します。

instanceof
は、それが配列であるかどうかを判断するために使用できます。

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;}
ログイン後にコピー

haorooms.constructorを出力すると、constructorが返されたオブジェクトに対応するコンストラクターであることが分かります。

Object.prototype.toString
コンストラクター属性を使用してオブジェクトの型を決定できることを前述しました。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]"
ログイン後にコピー

このメソッドを使用すると、型を正しく決定できます。変数の Basic 型ですが、カスタム型の場合、結果は [object Object] のままなので実際の型はわかりません

Others
jQuery にも型判定メソッドがあります。例を示します

$.isWindow(window) // true
ログイン後にコピー

。やり方

core.js#479
isWindow: function( obj ) {
  return obj != null && obj == obj.window;
}
ログイン後にコピー

そこで、次のようなオブジェクトを開きます:

var fakeWindow;
fakeWindow = {};
fakeWindow.window = fakeWindow;
$.isWindow(fakeWindow) // true
ログイン後にコピー

そうすれば、あなたは彼を騙したことになります。

まとめ
JavaScript で型を正しく判断するのは非常に面倒です。よく勉強すると、さまざまな状況に応じて判断を設計することが非常に重要です。また、最も簡潔に使用する方法も考えなければなりません。もちろん、isPrototypeOf メソッドなど、この記事で紹介されていない部分もたくさんありますが、それを使用する場合は常に改良されている必要があります。多すぎることに注意してください。ほとんどの方法は両面ブレードであるため、注意して使用してください。

JavaScript でデータ型を決定する方法をまとめた関連記事をさらに詳しく知りたい場合は、PHP 中国語 Web サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!