2014-03-30 1 views
0

ES5 이후로 Object.freeze()을 사용하여 개체를 잠글 수 있습니다."엄격한 사용"은 고정 된 개체에서 엄격 모드 오류를 트리거하도록 설정해야합니까?

그러나 JS를 실수 모드로 실행하면 엄격 모드를 활성화하지 않으면 속성에 대한 모든 쓰기가 자동으로 실패합니다.

하지만 어디에서 설정해야합니까? 모듈 시스템 (node.js/amd)을 사용하므로 많은 파일/범위가 포함됩니다.

  1. 오브젝트가 원래 생성 된 범위.
  2. 개체에서 Object.freeze()가 호출 된 범위입니다.
  3. 개체의 속성을 변경하려는 시도 범위입니다.
  4. 글로벌 스코프
  5. ???

이들 중 어느 것이 오류를 트리거하기 위해 'use strict'지시어를 가져야 만합니까?

+2

나는 3을 말하고 싶다. 나는 그냥 짐작하기 쉽다. –

+0

^^^ 그가 한 말 -> http://jsfiddle.net/adeneo/7vfb4/ – adeneo

답변

2

원래 개체가 생성 된 범위.

아니요. 문제가되지 않습니다.

개체에 대해 Object.freeze()가 호출 된 범위입니다.

freeze이 던질 때만 관련이 있습니다.

개체의 속성을 변경하려는 시도 범위.

예. [[Put]]은 평가 기준이 엄격 할 때 던져하지, 다음과 같이 참조 property accessors으로 구성되어 :

7. 엄격 모드 코드에 포함되어 평가되고있는 구문 생산,하자 다른, 사실 엄격하게하는 경우 엄격한 거짓.

8. 기준 값이 baseValue이고 참조 된 이름이 propertyNameString이고 엄격 모드 플래그가 strict 인 참조 유형 값을 반환합니다.

글로벌 범위는

아니요 "글로벌 범위"엄격한 할 수 없습니다. Strictness는 프로그램 코드의 속성이며 그 최상위 단위는 "프로그램 코드"입니다 - 귀하의 경우 모듈 파일.