JavaScript判定データタイプ(typeof instance of)

7716 ワード

1.typeof
  • は、基本的なデータの種類を判断するために主に使われています.string、number、bollan、object、function、undefined.
  • 技術的な観点から、ECMAScriptの関数は対象であり、データの種類ではない.しかし、関数にはいくつかの特殊な属性がありますので、typeofオペレータによって関数と他のオブジェクトを区別する必要があります.
  • は、まだ宣言されていない変数に対して、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
  • 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操作符のように、他のどのような使い方も避けられます.
  • 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"));
    //         
    テキスト