2014-03-04 2 views
1

JS에서 삭제를 이해할 때 interesting article을 읽습니다.자바 스크립트 : 삭제 동작

나는 특성이 변수 선언을 통해 생성 된 것을 이해 삭제, 또는 속성이 삭제 될 수 있습니다 속성 할당을 통해 생성하면서 더 정확하게는 DontDelete 속성이 될 수 없다.

는하지만 부동산 오버로드가이 아이디어를 작동하는 방법과 혼란 스러워요 :

> var GLOBAL_OBJECT = this; 
undefined 

> var declared = "I cannot be deleted"; 
undefined 

> delete declared; 
false 

> assigned = "I can be deleted"; 
'I can be deleted' 

> delete assigned; 
true 

> // Now, I will override `declared` ... 

> declared = "I am overrided - now deletable?"; 
'I am overrided - now deletable?' 

> declared; 
'I am overrided - now deletable?' 

> delete declared; 
false 

이 등록 정보 속성이 있다는 것입니다 날 것으로 보인다 속성이 변수 객체 내에서 생성 될 때 일정. 따라서 속성을 재정의하려고 시도하면 속성이 재정의되지만 속성 속성은 무시됩니다.

이 정보가 맞습니까?

답변

0

속성을 "오버라이드"하는 것은 실제로는 정규 할당입니다. 변수의 값을 변경하기 만하면됩니다. 변수의 모든 속성은 언급 한 DontDelete를 포함하여 동일하게 유지됩니다.

예에서 변수가 assigned 인 경우 변수는 암시 적으로 정의되었으므로 var 키워드로 선언되지 않았기 때문에 변수를 삭제할 수 있습니다.

+0

아, 알겠습니다. 나는 다른 선언문 (OO)이 기존 선언을 스택 (stack)하거나 대체 (replace) 할 수있는 다른 OO 언어 (overloading, operator overloading)에서 오버로딩 원리를 생각하고 있었다. –

0

나는 너무 성급하게 기사를 읽었습니다. 여기

이 주제를 해결 문서, 그것 (즉 아무것도 설정되지 않는다) 결정 특성 속성 작성 중에 있음

주에서 인용된다. 나중의 과제는 기존 속성의 속성을 수정하지 않습니다. 이 구별을 이해하는 것이 중요합니다.