2016-06-25 12 views
0

私はこのコードを使っています。さて、確認のために、私はタイプのarrを印刷し、コンソールに "object"と表示しました。しかし、私は最初に配列としてと宣言しました。それはオブジェクトに変換されていますか?ここで コードです:配列はJavaScriptのオブジェクトの特殊なケースですか?

<script> 
function getDomainsOfEmails(text) { 
    var arr=new Array; 
    var regex= /[a-z0-9._%+-][email protected][a-z0-9.-]+\.[a-z]{2,4}/g; 
    var matches= text.match(regex); 
    for(var i=0; i<matches.length; i++){ 
     arr[i]=matches[i].match(/@[a-z0-9.-]+\.[a-z]{2,4}/); 
    } 
    for(j=0; j<arr.length; j++){ 
    console.log(arr[j]); 
    } 
    console.log(typeof arr); 
} 
getDomainsOfEmails("[email protected] is not a mail? Is [email protected] ? No? google.com? [email protected] gmail.com"); 
</script> 

また、私はそのプロパティと値が何であるか、それはオブジェクトのかどうかを知りたいですか?

+1

可能な複製(http://stackoverflow.com/questions/12996871/why-does-配列付きオブジェクト型戻りオブジェクトと配列ではない) – JJJ

+1

はい、配列は単なる(特別な)オブジェクトです。プリミティブ値ではない値はすべてオブジェクトです。 –

+2

2番目の質問については、[ドキュメントを読む](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Properties_2)。 – JJJ

答えて

-1

はいアレイは()のみ

アレイを作成

するvar ARR =新しいArrayオブジェクトです。

ARR .____ proto____(プロトリンクstackoverflowの2 undescoresを消費している) - > Array.prototypeを

Array.prototypeを--->のObject.prototype

また[1,2,3]オブジェクトのinstanceof --->真どうやらはい次の結果に応じて

3

typeof Array() 

戻り"object"

Array() instanceof Object 

戻りtrue

更新:APIドキュメント

によると、すべてのArrayインスタンスがArray.prototypeを継承。 Arrayコンストラクタのプロトタイプオブジェクトを変更して、すべてのArrayインスタンスに影響を与えることができます。

参照:[なぜオブジェクトとtypeof演算配列は、 "オブジェクト" とない "アレイ" を返すん]のhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Properties_2

+1

FWIWでは、 'typeof'は値の*実数型を得るための貧弱な解決法です。 –

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeofを参照してください。実際にArray.isArrayを使用して、通常のオブジェクトと配列を区別する方が効果的です。この場合、typeofは望ましくない結果をもたらします。 – printfmyname

関連する問題