JavaScript判定データタイプ(typeof instance of)
7716 ワード
1.typeofは、基本的なデータの種類を判断するために主に使われています.string、number、bollan、object、function、undefined. 技術的な観点から、ECMAScriptの関数は対象であり、データの種類ではない.しかし、関数にはいくつかの特殊な属性がありますので、typeofオペレータによって関数と他のオブジェクトを区別する必要があります. は、まだ宣言されていない変数に対して、typeofオペレータを使用して、そのデータタイプを検出することしかできません. は、変数が存在するかどうかを判断する .
typeof操作結果
「JavaScript」
ストリングス
new String(「JavaScript」)
「object」
1.2
「number」
new Number(1.2)
「object」
true
「bollan」
function(){}
「function」
new Boolean(true)
「object」
new Function(")
「function」
//abc/g
「object」
[1,2,3]
「object」
Symbol(new in ECMAScript 2015)
「smbol」
Host object(provided by the JS environment)
Implementation-dependent
2.instance of instance of左の操作数はクラスで、右の操作数はオブジェクトを識別するクラスです.左側のオブジェクトが右側のクラスの例である場合、true. に戻ります.、jsのオブジェクトのクラスは、それらの構造関数を初期化することによって定義される.つまりinstance ofの右操数は一つの関数であるべきです.すべてのオブジェクトはobjectの例です.左の操作数が対象でない場合はfalseに戻り、右の操作数が関数でない場合はtypeErrを投げます. instance of演算子は、オブジェクトがそのプロトタイプ構造関数のプロトタイプにあるかどうかをテストするための属性です.その文法はobject instance of construct です. instance ofオペレータは、2つの動作数の構造関数を比較するために使用される.カスタムオブジェクトを比較するときのみ意味があります.内蔵タイプを比較するのに使うと、typeofオペレータと同じようにあまり役に立ちません. には、JavaScriptのコンテキストに属するオブジェクト(例えば、ブラウザ内の異なるドキュメント構造)を比較するために、instance ofが使用されている場合、エラーが発生します.それらの構造関数は同じオブジェクトではないからです.結論:instance ofオペレータは、同じJavaScriptコンテキストからのカスタムオブジェクトを比較するためにのみ使用されるべきである.typeof操作符のように、他のどのような使い方も避けられます.
// 。
if(typeof array!='undefined'){
// }
データtypeof操作結果
「JavaScript」
ストリングス
new String(「JavaScript」)
「object」
1.2
「number」
new Number(1.2)
「object」
true
「bollan」
function(){}
「function」
new Boolean(true)
「object」
new Function(")
「function」
//abc/g
「object」
[1,2,3]
「object」
Symbol(new in ECMAScript 2015)
「smbol」
Host object(provided by the JS environment)
Implementation-dependent
2.instance of
function C() {
} // defining a constructor
function D() {
} // defining another constructor
var o = new C();
o instanceof C; // true, because: Object.getPrototypeOf(o) === C.prototype
o instanceof D; // false, because D.prototype is nowhere in o's prototype chain
o instanceof Object; // true, because:
C.prototype instanceof Object // true
C.prototype = {};
var o2 = new C();
o2 instanceof C; // true
o instanceof C; // false, because C.prototype is nowhere in o's prototype chain anymore
D.prototype = new C(); // use inheritance
var o3 = new D();
o3 instanceof D; // true
o3 instanceof C; // true
var myString = new String();
var myDate = new Date();
myString instanceof String; // returns true
myString instanceof Object; // returns true
myString instanceof Date; // returns false
myDate instanceof Date; // returns true
myDate instanceof Object; // returns true
myDate instanceof String; // returns false
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
var mycar = new Car("Honda", "Accord", 1998);
var a = mycar instanceof Car; // returns true
var b = mycar instanceof Object; // returns true
3.配列の種類を判断するvar arr = [1,2,3,4];
var arr2 = new Array(1,2,3,4);
console.log(arr instanceof Array); //true
console.log(Array.isArray(arr)); //true
console.log(Object.prototype.toString.call(arr)); //[object Array]
console.log(arr2 instanceof Array); //true
console.log(Array.isArray(arr2)); //true
console.log(Object.prototype.toString.call(arr2)); //[object Array]
4.Objectタイプかどうか判断するtypeof "dfdf"; // "string"
typeof new String("dfdf"); // "object"
Object.prototype.toString.call("dfdsf");
Object.prototype.toString.call(new String("dfdf"));
//
テキスト