아래의 코드를 참조하십시오. 주석 처리 된 줄 중 하나에 "주석으로 추가"할 때 IE ("예상 됨")의 오류가 발생합니다. 그럼 내 결론은 정확하다.이 무능력은 객체 값에 대한 참조를 문자열 리터럴의 객체 키로 제공 할 수 없다. 이것은 엄격하게 통역사/파싱 문제입니까? 이것은 Crockford의 "좋은 부분"과 달리 Javascript의 끔찍한 (또는 적어도 "나쁜"부분) "부분"에 대한 후보입니까?이 Javascript 개체 리터럴 키 제한은 파싱으로 인한 것입니까?
<script>
var keys = {'ONE': 'one'};
//causes error:
//var obj1 = {keys.ONE: 'value1'};
//var obj1 = {keys['ONE']: 'value1'};
//works
var obj1 = {};
obj1[keys.ONE] = 'value1';
//also works
var key_one = keys.ONE;
var obj2 = {key_one: 'value1'};
</script>
가 문자열 이름으로 해석되는 문자는 변수 이름
objectname[anythingThatReturnsValue]='value1';
동안 사용할 경우에만 구성 할 수 있습니다 따라서 {}
와 객체를 정의 할 때 키와 같은 변수를 사용할 수 없습니다
BTW'VAR key_one = keys.ONE; var obj2 = {key_one : 'value1'};'예상대로 작동하지 않습니다. 'obj2'의 속성은'key_one'이 될 것이고'key.ONE'의 값이 아니라'one'이 될 것입니다. – RoToRa
마지막 예제가 효과가 있지만, 'keys.one'속성이 아닌 'key_one' 속성으로 객체를 생성한다는 점에 유의하십시오. 변수'key_one'는 다음 줄의 리터럴 객체와 관련이 없습니다. – Guffa
잡았습니다 .... 혼란 스러울 수 있습니다 ... "인용되지 않은"문자열을 모두 허용하지 않거나 참조가 무엇이든 상관없이 참조를 해제해야합니다. –