JavaScriptでのタイプチェック


JavaScriptの一般的なタイプ:number string boolean object null undefined.
 
変数のタイプを判断する方法:
 
1.typeofメソッド:number string boolean object function undefinedを判断できますが、特定のObjectクラスではArrayかDateか、カスタムオブジェクトタイプかは細分化できません.
 
インスタンスコードの表示:
 
var str = [];
typeof str == "object"; //true
   
 
2.instanceOf変数の具体的なオブジェクトタイプを判断できるが、その意味によって継承関係を区別することはできない.
 
サンプルコードの表示:
 
var person  = function(name){this.name =name};
var author = function(name,age){thia.name=name;this.age = age};
author.prototype = new person();
alert(new author() instanceof person)  //TRUE
 
 
3.constructorプロパティ
constructorプロパティ:由来とprototypeの関係
JAvascriptは、関数Fを作成すると、関数にprototypeの参照を追加してプロトタイプオブジェクトを実行します.このオブジェクトには属性constructorがこの関数を指しています.これにより循環参照が形成される.この関数を用いて作成するオブジェクトにはconstructor属性はなく、prototypeがF.prototypeを指すだけである.
constructorプロパティに問題がある
異なるiframeに対して同じタイプも異なる構造関数を指します.
 
4.鴨式弁型
思想:動物がアヒルの歩くこともアヒルの鳴くこともできるなら、それはアヒルだと思っています.
 
インスタンスコード:
 
isArray : function(object){
    if(typeof object == "object"&& "splice" in object&&"join" in object){
         return true;
    }
    return false;
}

 
欠点:ただし、オブジェクトにこれらのプロパティが適切にある場合は、エラーが判断されます.
 
サンプルコード:
 
var people = new People();
people.prototype = {
   splice : function(){},
   join    : function(){}
};
 
 
 
5.toStringこの方法はObjectにおけるオリジナルの方法である
 
例えば、var time=["wang","cheng"];
    alert(Object.prototype.toString.call(time));//【object  Array】