JSでデータの種類を判断する方法——水深
9791 ワード
typeof、instance of、constructor、jQuery.type()
1.typeof——対応するデータタイプを返します.
2.instance of——対象のタイプにのみ適用され、簡単なタイプのデータタイプには適用されず、book値に戻ります.
3.constructor――それ自体はprototypeオブジェクトの属性であり、デフォルトではprototype属性がある構造関数を指しています.ここではデータの種類を判断します.ブックの値を返します
以上が私の簡単な理解です.
1.typeof——対応するデータタイプを返します.
:
:typeof( )
:
var str = " ";
var num = 666;
var obj = new Object();
var arr = [1,2,3];
var fn = function(){
console.log(" ")
}
typeof(str) //string
typeof(num) //number
typeof(obj) //object
typeof(arr) //object
typeof(fn) //function
問題:参照タイプ(複雑なデータタイプ:オブジェクトと配列)であれば、返ってくるのは全部Objectです.2.instance of——対象のタイプにのみ適用され、簡単なタイプのデータタイプには適用されず、book値に戻ります.
:1: ;
2:
: instanceof || instaneof
1:
オブジェクトタイプであれば区別できます.arr instanceof Array //true
new Date() instanceof Date //true
2:
は、instanceof
を使用して、構造関数F
に属しているかどうかを確認する.var F = new fn(); //
F instanceof fn ; //true, F fn
fn
は、異なるコンストラクタに対して、同じインスタンスはtrueに戻り、次のFはObjectに対して同様にtrueに戻った.F instanceof Object //true
:
左は例示的なオブジェクトで、右はコンストラクションで、instance ofはコンストラクタのプロトタイプオブジェクトprototypeが左のオブジェクトのプロトタイプチェーン上にあるかどうかを確認し、ある場合はtrueに戻ります.そうでなければfalseに戻ります.instanceof :
内部実行関数:instanceof (A,B) = {
var L = A.__proto__;
var R = B.prototype;
if(L === R) {
//A __proto__ B
return true;
}
return false;
}
左のオブジェクトのプロトタイプチェーンと右の関数のプロトタイプオブジェクトに何が発生しているかを見てみましょう.F.__proto__===fn.prototype //true F fn
F.__proto__.proto__||fn.prototype.__proto__===Object.prototype //true fn Object
Object.prototype.__proto__ //null
F-fn-Objectはいずれも一つのプロトタイプチェーン上にあり、その中でfnとObjectのプロトタイプの属性はFがあるこのプロトタイプチェーン上に存在するので、Fピンは二つの関数に対してtrueに戻ります.3.constructor――それ自体はprototypeオブジェクトの属性であり、デフォルトではprototype属性がある構造関数を指しています.ここではデータの種類を判断します.ブックの値を返します
:1. , 、 、 ,
: .constructor ===
instanecof
str.constructor===String //true
num.constructor===Number //true
obj.constructor===Object //true
arr.constructor===Array //true
new Date().constructor===Date //true
4.jQuery.type()——万能と称する : 。PS.
:jQuery.type( )
:
は、日付、正則、undefined、nullなどを含むと判断できます.jQuery.type(str) //string
jQuery.type(num) //number
jQuery.type(arr) //array
jQuery.type(obj) //object
jQuery.type(fn) //funtion
:
typeof()——簡単なデータタイプを判断すると、菊粉の複雑なデータタイプはできません.例えばObjectとArayのように戻ってくるのはすべてObject instance ofです.オブジェクトだけに適用してデータタイプを区別します.また、ある例があるコンストラクタの一例かどうかを判断することもできますが、複数のコンストラクタに対応する場合があります.すべてのデータタイプを判断します.もちろん彼の本質はプロジェクトタイプの関数を計算するjQuery.typeです.すべてのデータタイプを判断します.以上が私の簡単な理解です.