빈 속성 키를 소유하고 있습니까?
Firefox에서만 사용할 수 있습니다. 예를 들어 여기에서 첫 번째 속성을 참조하세요.
var countsByStatus = {
"": 23, //unknown status
"started": 45,
"draft": 3,
"accepted": 23,
"hold": 2345,
"fixed": 2,
"published": 345
}
EcmaScript 사양을 훑어 보면 (최소 5 개) 속성 키는보다 많은 문자로 정의되고 정의됩니다. 이것은 유효한 속성 이름임을 의미합니다.
어쨌든 데이터 항목의 상태에 따라 일부 개수의 요약을 계산하는 코드 섹션에서 그것을 사용하고 싶습니다 (위에서 것과 유사 함). 상태가 없을 수있는 일부 항목이 있고 해당 항목에 대한 자리 표시자가 필요합니다. 상태는 사용자가 정의 할 수 있기 때문에 충돌 할 수있는 더미 단어를 사용하는 위험을 감수하고 싶지 않습니다.
쉽게 찾을 수 있습니다. 또한 빈 페이지는 상태가없는 항목의 정확한 상태 값이기 때문에 코드를 좀 더 많이 만듭니다.
그러나 동시에 내 직감은 뭔가 잘못 말하고 있습니다. 내 말은, 일부 브라우저가 지원하지 않을 가능성을 배제하고 언젠가 수정 될 자바를 지원하지 않습니다. 그러나 그것은 내가 지금 매일 사용하는 많은 다른 JavaScript 기능에 대해 한때와 같은 느낌입니다 (예를 들어 && 및 ||가 피연산자 중 하나의 값을 반환한다는 것을 발견 한 시간 참 또는 사실).
객체의 키는 문자열이어야하며 빈 문자열 ( ''
) 은 문자열입니다. 빈 SDK를 키 이름으로 사용할 수 있습니다.
나는 사용하는 것이 낙담 의 일반적인 사용 ''
키로을하지만, 조회를 위해, 그것은 잘 작동합니다, 합리적인 소리. 예외적 인 상황을 참조하는 댓글을 추가 할 수있는 좋은 장소입니다.
또한 조회하는 동안에 캐스트되는 값에 문제가있을 수 있습니다.
o = {...} //some object
foo = 'bar';
//some examples
o[foo] //will return o['bar']
o[null] //will return o['null']
o[undefined] //will return o['undefined']
당신이 원하는 경우 null
와 undefined
사용 키 ''
를, 당신은 대체를 사용할 수 있습니다 :
key = key || '';
URL이 아닌 값이 전달되는 경우 캐스트도 중요합니다.
key = key || '';
key = '' + key;
값은 0
로 바뀌고 ''
값 '0'
은 그대로 유지 '0'
됩니다.
대부분의 경우, 나는 미리 정의 된 값을 해시 테이블목적. 값이 개체에 있는지 확인하려는 다음과 같은 여러 옵션이 있습니다.
//will be falsey if the value is falsey
if (o[key]) {...}
//will return true for properties on the object as well as in the prototype hierarchy
if (key in o) {...}
//returns true only for properties on the object instance
if (o.hasOwnProperty(key)) {...}
기술적으로는 모든 js 엔진 (내가 알고있는)에서 사용할 수 있습니다. ECMAscripts 사양은 모든 객체 키가 클래스 라고 말하고 있습니다.
유일한주의 사항은 점 표기법으로 해당 속성에 액세스 할 수있는 것입니다.
countsByStatus.;
물론 구문 오류가 발생하는 경우 항상
countsByStatus[''];
여기서는 부분에 관한 것입니다. 우리는 설득력있는 부분에 대해 이야기하면, 나는 매우 취소에 대한 투표 것 아니요 , 사용하지 않습니다.
그것은 혼란으로 이어질 것이며 우리 모두가 알고 있듯이 혼란은 적 입니다.
문제는 그 상태가 사용자 정의 가능한에서 사용자을 stoping 아무것도 존재하지 않기 때문에 또한 따라서 귀하의 논리를 망치고, 상태로 빈 문자열을 사용하여이. 이 관점에서 당신이하고있는 일은 단지 __$$unknown_status
. (글쎄, 추악한 사용자 정의 이름이 더 설명 적이지만 각각 고유 한 이름이라고 말하고 싶습니다 ...)
"unknown"속성이 충돌하지 않는지 확인하려면 별도로 유지해야합니다.
var counts = {
unknownStatus: 23,
byStatus: {
"": 17, //actual status with no name, (if this makes sense)
"started": 45,
"draft": 3,
"accepted": 23,
"hold": 2345,
"fixed": 2,
"published": 345
}
};
괜찮다고 생각합니다. ""
애플리케이션에 의미 체계와 유효한 자바 스크립트가 있습니다. 그래서 그것을 가지고 있습니다.
참고
x."" = 2;
오류가 발생하므로 다음과 같은 구문을 사용해야합니다.
x[""] = 2;
"알 수없는 상태"가 null 값이거나 상태 필드가 "null이 아님"입니까?
첫 번째 경우에는 별도의 카운터를 사용해야한다고 말하고 두 번째 경우에는 "비어 있음"이 완벽하게 유효한 상태라고 말하고 싶습니다. ""대신 "알 수 없음"이라는 단어를 출력으로 사용하십시오. 이는 사용자가 상태 유형과 동일한 단어를 사용할 때만 혼동을 유발할 수 있지만 "알 수없는 상태"출력 텍스트에 대해 다른 비주얼 스타일 만 사용할 수있는 것을 방지하기 위해서입니다.
참고 URL : https://stackoverflow.com/questions/8343938/should-i-use-an-empty-property-key
'ProgramingTip' 카테고리의 다른 글
시뮬레이터 "소프트웨어로 인해 연결이 중단되었습니다"에 연결하는 동안 Xcode 오류 (0) | 2020.11.26 |
---|---|
.Net 4로 C # 4에서 할 수 없었던 .Net 4.5로 C # 5에서 무엇을 할 수 있습니까? (0) | 2020.11.25 |
.Net에서 Decimal.One, Decimal.Zero, Decimal.MinusOne의 목적은 무엇입니까 (0) | 2020.11.25 |
Rubygems, Bundler 및 RVM 혼동 (0) | 2020.11.25 |
Android 애플리케이션에서 TLS 1.2 지원을 활성화하는 방법 (Android 4.1 JB에서 실행) (0) | 2020.11.25 |