JSON은 * functions *를 키로 사용하는 배열을 직렬화 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/834264

  •  08-07-2019
  •  | 
  •  

문제

나는 언어학 자바 스크립트 프로젝트를 다루고 있습니다. 객체를 사용하여 명사와 기능을 나타내는 객체를 사용하여 동사를 저장하는 기능을 만들고 싶습니다. 기능을 객체의 키로 사용하고 있습니다 (아래 예제를 작성했습니다). 데이터를 저장할 때가되면 JSON으로 직렬화 할 수 있습니까?

function verbFn() {
   //do something
}

var nouns = {};

nouns[verbFn] = 'some value';

이 예에서 JSON은 "명사"를 직렬화 할 수 있습니까?


어 ... 저의 원래 질문을 반영하고 의견을 읽은 후에 나는 이런 식으로 일을하려고하는 것이 매우 잘못되고 어리 석다는 결론에 도달했습니다.

도움이 되었습니까?

해결책

아니, JSON 이것을 할 수 없습니다. 키는 이중 인용 문자열이어야합니다.

또한 실제로 기능을 키로 사용하지 않는 것 같습니다. 문자열로 변환됩니다.

<script>

var x = {};
x[window.open] = true;

for (var i in x)
    alert(typeof i + '\n' + i); // typeof i == string

</script>

다른 팁

에 따르면 표준 아니요. 키는 문자열이어야합니다

실제로 함수를 키로 사용하지 않습니다. 함수의 문자열 변환을 키로 사용하고 있으며, 이는 해당 문자열 표현이 고유 한 경우에도 암시 적으로 의존합니다. 디 컴파일 기능을 지원하는 플랫폼의 경우 이것은 잘 작동하지만 이론적으로 [function]을 반환하는 구현이있을 수 있습니다.

JSON은 데이터 구조 구문입니다. 함수는 데이터가 아니므로 데이터 구조의 일부로 직렬화 할 수있는 방법이 없습니다 (키 또는 기타). 언어, 구현 또는 기타에 관계없이.

아니요, 열쇠는 항상 끈이어야합니다. 보다 표준 설명.

그리고 nouns 배열,지도, 해시 테이블, 연관 배열, "객체", 그 중 하나, 원하는 이름이 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top