Program Tip

유효한 자바 스크립트 객체 속성 이름

programtip 2020. 11. 15. 11:39
반응형

유효한 자바 스크립트 객체 속성 이름


나는 자바 스크립트 객체의 속성 이름에 유효한 것으로 간주되는 것을 해결하려고합니다. 예를 들면

var b = {}
b['-^colour'] = "blue";     // Works fine in Firefox, Chrome, Safari
b['colour'] = "green";      // Ditto
alert(b['-^colour']);       // Ditto
alert(b.colour);            // Ditto
for(prop in b) alert(prop); // Ditto
//alert(b.-^colour);     // Fails (expected)

게시물 은 유효한 자바 스크립트 변수 이름에 대해 자세히 설명하며 '-^ colour'는 변수 이름으로 유효하지 않습니다. 객체 속성 이름에도 동일하게 적용됩니까? 위의 내용을 살펴보면

  1. b [ '-^ colour']는 유효하지 않지만 모든 브라우저에서 기발하게 작동하며 앞으로 작동한다고 믿으면 안됩니다.

  2. b [ '-^ colour']는 완전히 유효하지만이 방식으로 만 액세스 할 수있는 형식 일뿐입니다. (지원되므로 객체를 맵으로 사용할 수 있습니까?)

  3. 다른 것

제쳐두고, 자바 스크립트의 전역 변수는 최상위 수준에서 다음과 같이 선언 될 수 있습니다.

var abc = 0;

그러나 (내가 이해하는대로) 생성 될 수 있습니다.

window['abc'] = 0;

다음은 위의 모든 브라우저에서 작동합니다.

window['@£$%'] = "bling!";
alert(window['@£$%']);

유효한가요? 변수 이름 지정 규칙과 모순되는 것 같습니다. 아니면 변수를 선언하지 않습니까? 변수와 개체 속성 이름의 차이점은 무엇입니까?


예, 객체를 맵으로 사용할 수 있으며 모든 문자열이 속성 이름이 될 수 있습니다. 아시다시피 일부 속성은 대괄호 구문을 사용해야 액세스 있습니다.

window['abc']

속성에 액세스하고 있습니다. 다음과 같은 값 (전역 수준)을 참조하더라도 변수가 아닙니다.

abc

개체 속성 명명 규칙과 변수 명명 규칙은 별개입니다. 표준은 소수의 속성 이름 (예 : prototypeand constructor, IIRC) 만 "예약" 하지만 그 외에는 모든 문자열이 사용됩니다.

물론 실행 환경 (예 : 브라우저)이 더 많은 마법 속성을 추가하기로 결정한 경우는 예외입니다. (나는 설정 __proto__이 아주 이상한 방식으로 어떤 것을 깨뜨리는 것을 들었다 )


  1. 전역 변수를 만들 때마다 실제로 전역 개체 의 새 구성원 ( window브라우저 환경, globalNode.js 등)을 만듭니다. 이유는 window.x정확히 (글로벌)와 같은 같은 var x, this.x아니면 그냥 x.

  2. 지도와 같은 자바 스크립트 객체를 이해 하는 것은 매우 옳습니다. 그 이유는 다음과 같습니다. a) 언제든지 새 요소를 동적으로 추가 할 수 있습니다. b) 요소는 모든 이름을 가질 수 있습니다. 특수 문자도 포함됩니다. c) 개체 / 맵의 존재하지 않는 요소에 액세스하려고 시도 할 수 있으며 오류가 아닙니다. d) 개체에서 요소를 제거 할 수 있습니다.

  3. 표준 점 표기법 (예 :)으로 객체 멤버에 액세스 a.x하려면 _ 또는 $ 이외의 특수 문자를 사용할 수 없습니다. 또한 이름은 숫자로 시작할 수 없습니다. 다른 모든 경우에는 대괄호와 따옴표를 사용하여 개체 요소에 액세스해야합니다.

참고 URL : https://stackoverflow.com/questions/2940424/valid-javascript-object-property-names

반응형