javascript配列、対象とNullのtypeofは同じobjectで、解決方法を区別します.

2852 ワード

JSではtypeofが多く使われていますが、配列、対象とNullの区別ができない問題に対して、サイの本を見たら解決方法があります.
document.writeln(typeof "abc"); //string
document.writeln(typeof 123);   //number
document.writeln(typeof true);  //boolean
document.writeln(typeof eval);  //function
document.writeln(typeof []);    //object
document.writeln(typeof null);  //object
document.writeln(typeof {});    //object
基本的なデータタイプはほとんど出てきましたが、配列、対象とnullは区別できません.どうやって破れますか?
実はどこでこのような話を聞いたことがありますか?JavaScriptの中ではすべて対象です.今は私も経験があります.下を見てみます.
Object.prototype.toString.call() 
//ECMA 5.1          
//[object Undefined]           
これはどう使いますか?直接例をあげる
Object.prototype.toString.call([]) == "[object Array]"
Object.prototype.toString.call({}) == "[object Object]"
Object.prototype.toString.call(null) == "[object Null]"
以上ははっきりと区別しました.JavaScriptの中ではすべて対象が完全にここに現れています.基礎データの種類を試してみます.
Object.prototype.toString.call(123) == "[object Number]"
Object.prototype.toString.call("arr") == "[object String]"
Object.prototype.toString.call(true) == "[object Boolean]"
結果はtrueのはずです.このように証明されています.問題は解決されました.他にも直接コードをつける方法がありますので、ひそかに試してみてください.
(typeof arr == "object") && (arr.constructor == Array)
(typeof arr == "object") && (arr instanceof Array)