2017-02-12 18 views
-2

1)他の言語では、関数をパラメータ化された文のブロックとして定義し、構文レベルではjavascript関数も同じように見え、独自のプロパティとメソッドどのように構文的にキー/値のペアとして表現できますか?機能コードはどこにありますか?ここJavascript:キーと値のペアとしての関数と配列

var x = function(a,b){alert('Hi');}; 
    // x = { _code: "alert('Hi'), _arguments: {a:.., b:..,}} 

コードと引数私の想像上の内部プロパティ

2です)の配列は、キー/値のペアであれば、私はその配列のインデックスがキーを単にオブジェクトされていると考えることができますか?

var a = ["elem1", "elem2"]; 
// a = {0: "elem1", 1: "elem2"} 
+0

"配列がキー/値のペアの場合"あなたは配列ではなくオブジェクトを意味するかもしれませんか? –

+0

すべてがJavaScriptのオブジェクトです。 – Darkrum

+1

ここでは、あなたが達成しようとしていることは明確ではありません。 – guest271314

答えて

-1

JavaScriptでEVERYTHINGがオブジェクトであるという私のコメントに拡大。それは文法的にキー/値のペアとして表現することができますどのように

var arr = [ 

    function() { 

    console.log("Well... Look at that."); 

    } 

]; 


var obj = arr[0]; 

obj(); 

var newObj = Object.assign({}, arr); 

console.log(newObj); 

newObj[0](); 
+0

あなたはファンクションがファーストクラスのオブジェクト(私は推測)であることに気がつきました。これは私の質問に対する答えではありません – Coder007

+0

いいえ...私は説明するために関数を使用しました。私はその配列に何かを置くことができた。 – Darkrum

+0

:)これは実際に私の質問への答えではありません – Coder007

0

できません。

関数の実行可能コードは、オブジェクトのプロパティに関して表現されていません。

機能コードはどこにありますか?

これはJavaScriptエンジンの実装の詳細であり、標準的な方法でJavaScriptコードに公開されているものではありません。

配列がキー/値のペアの場合、配列インデックスは単なるオブジェクトキーだと思いますか?

は、です。 the specification

配列オブジェクトは、特定のクラスのプロパティ名に対して特別な処理を行います。 ToString(ToUint32(P))がPに等しく、ToUint32(P)が2 -1に等しくない場合にのみ、プロパティ名P(String値の形式)は配列インデックスです。プロパティ名が配列インデックスであるプロパティは、要素とも呼ばれます。すべてのArrayオブジェクトにはlengthプロパティがあり、その値は常に2 以下の非負整数です。 lengthプロパティの値は、名前が配列インデックスであるすべてのプロパティの名前よりも数値的に大きいです。

...など。

+0

"関数の実行可能コードは、オブジェクトのプロパティに関して表現されていません。"それはちょっと混乱します。私はいくつかの関数のプロパティを介して関数コードを変更できるとは思っていませんでしたが、私は完全な画像のために内部隠れたプロパティがあるはずだと述べました。 – Coder007

+0

@ Coder007 - 「これはJavaScriptエンジンの実装の詳細であり、標準的な方法でJavaScriptコードに晒されたものではありません」と述べています。 – Quentin

関連する問題