2017-02-12 1 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

모든 것이 자바 스크립트의 객체입니다. – Darkrum

+1

명확하지 않지만, 여기서 바라 보는 관점에서 달성하려는 목표는 무엇입니까? – guest271314

답변

-1

자바 스크립트 모든 것을는 객체임을 내 댓글에 확장.

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 (문자열 값 형식)는 배열 인덱스입니다. 속성 이름이 배열 색인 인 속성을 요소라고도합니다. 모든 Array 객체는 길이가 항상 0보다 작은 음수가 아닌 길이 속성을가집니다. . length 속성의 값은 이름이 배열 색인 인 모든 속성의 이름보다 수치 적으로 더 큽니다.

... 등등.

+0

"함수의 실행 코드는 객체의 속성으로 표현되지 않습니다." 그것은 다소 혼란 스럽습니다. 일부 기능을 통해 기능 코드를 변경할 수 있다고 생각하지는 않았지만 완전한 그림을위한 내부 숨겨진 속성이 있어야한다고 언급 했었습니다. – Coder007

+0

@ Coder007 - "이것은 JavaScript 코드의 구현 세부 사항입니다. 표준 방식으로 JavaScript 코드에 노출되지 않았습니다." – Quentin