2012-02-02 4 views
13

나는 내 자신의 규칙을 위반하는 것을 막기 위해 Object.freeze를 사용합니다. 나쁜 과제를 만들려고 할 때 Object.freeze가 나에게 말하고 싶습니다. 그러나 Object.freeze는 할당을 자동으로 실패하게 만듭니다. 예를 들어, 내가 할 경우"Object.frozen"개체가 경고를 변경하려고 할 때 경고를 던지게하는 방법이 있습니까?

콘솔은 "1"을 기록하지만 나는 나쁜 할당을 한 적이 있는지 알 수 없습니다. 물론 객체의 동결 지점이 예기치 않은 것을 피할 때 코드에서 위험한 예기치 않은 동작이 발생할 수 있습니다. 실제로 객체를 고정하지 않고 잘못된 할당을 수행하고 잘못된 값으로 인해 코드가 나중에 실패하는 경우 자세한 오류 출력이 발생할 가능성이 큽니다.

"Object.frozen"개체를 변경하려고 할 때 알 수 있도록 모든 브라우저에 JavaScript에 "immutable object warning"pragma가 있는지 궁금합니다.

+0

IE8 이하 및 일부 다른 브라우저에서는 지원되지 않습니다. 너만 문제를 찾고 있다고 생각해. 적어도 모든 브라우저를 테스트하십시오. –

+0

@ 하리, Object.freeze를 사용하지 않고 프로그램의 흐름을 변경합니다. 나는 단지 그것을 안전 도구로 사용하고 싶다. 지원되지 않는 기능에 ** 의존 ** 할 것입니다! – Milosz

답변

18

쓰기 금지 속성 (ECMA-262: 11.13.1)을 할당하려고하면 엄격 모드의 코드가 TypeError이됩니다. 그러나 IE5와 같은 엄격한 모드를 완전히 지원하지 않는 브라우저에서 발생하는 오류에 의존 할 수는 없습니다.

코드를 엄격 모드로 실행하려면 코드가 들어있는 JS 파일 또는 함수의 시작 부분에 'use strict';을 추가하고 엄격 모드 (예 :이 목록의 예 : http://caniuse.com/#feat=use-strict 참조)를 실행하는 환경에서 실행하십시오.

+0

이것은 내가 찾고있는 것입니다. Safari가 'TypeError : readonly 속성에 할당하려고 시도했습니다.' 나쁜 임무를 부여하려고 할 때. 물론, try {} catch() {} 블록에서 이것을 사용하지 않을 것입니다. 왜냐하면 예외에 대한 안정적인 지원이 부족하기 때문입니다. 나 자신을위한 코딩 안전 도구 일뿐입니다. 많은 감사합니다! – Milosz

관련 문제