JavaScriptでのタイプチェック
1804 ワード
JavaScriptの一般的なタイプ:number string boolean object null undefined.
変数のタイプを判断する方法:
1.typeofメソッド:number string boolean object function undefinedを判断できますが、特定のObjectクラスではArrayかDateか、カスタムオブジェクトタイプかは細分化できません.
インスタンスコードの表示:
2.instanceOf変数の具体的なオブジェクトタイプを判断できるが、その意味によって継承関係を区別することはできない.
サンプルコードの表示:
3.constructorプロパティ
constructorプロパティ:由来とprototypeの関係
JAvascriptは、関数Fを作成すると、関数にprototypeの参照を追加してプロトタイプオブジェクトを実行します.このオブジェクトには属性constructorがこの関数を指しています.これにより循環参照が形成される.この関数を用いて作成するオブジェクトにはconstructor属性はなく、prototypeがF.prototypeを指すだけである.
constructorプロパティに問題がある
異なるiframeに対して同じタイプも異なる構造関数を指します.
4.鴨式弁型
思想:動物がアヒルの歩くこともアヒルの鳴くこともできるなら、それはアヒルだと思っています.
インスタンスコード:
欠点:ただし、オブジェクトにこれらのプロパティが適切にある場合は、エラーが判断されます.
サンプルコード:
5.toStringこの方法はObjectにおけるオリジナルの方法である
例えば、var time=["wang","cheng"];
alert(Object.prototype.toString.call(time));//【object Array】
変数のタイプを判断する方法:
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】