크로스 브라우저에서 작동하는 JavaScript 개체에 "숨겨진"비가 열 속성을 추가하는 방법이 있습니까?IE8 용 JavaScript에서 열거되지 않는 속성을 추가하는 방법은 무엇입니까?
가장 현대적인 브라우저의 경우, 당신은 할 수 있습니다 : Object.defineProperty
이없는 일부 오래된 비 IE 브라우저의 경우
Object.defineProperty(obj, '__id__', { enumerable: false, value: id++ });
, 당신은 the __proto__
hack를 사용할 수 있습니다.
그러나 이들 중 어느 것도 IE에서 작동하지 않습니다. IE8에서이 작업을 수행 할 수있는 방법이 있습니까 (IE7도 좋지만 필수는 아닙니다.).
주요 목표는 모든 JavaScript {}
개체에 추적기 속성을 추가 할 수 있지만 JSON.stringify(obj)
을 호출하면 속성에 포함되지 않도록하는 것입니다. 사용자 정의 JSON replacer 함수 (기본적으로 JSON.stringify
기능 확장)를 추가 할 수 있다는 것을 알았지 만, 추적 된 JavaScript 객체를 JSON으로 직렬화 할 때마다이를 의미하기 때문에 큰 팬이 아닙니다. 추가/추가해야한다는 것을 알고 있어야합니다. 그 대체 기능은 꽤 비실용적입니다.
이 작업을 수행 할 수있는 방법이 있습니까?
당신은 IE8 +라고하지만 IE9에서는'Object.defineProperty()'가 작동하지 않습니까? – nnnnnn
오, 그래, IE8을 의미하는 것 같아. IE7을 지원하는 방법이 있다면 정말 멋지 겠지만 기본적으로 IE8에서 어떻게 할 것인가. 업데이트 된 질문. –