배열을 ES5 스타일 개체의 속성으로 정의 할 때 속성 값을 변경할 수 없도록 설정하려고합니다.ES5 변경 불가능한 배열/속성 값 정의
'use strict';
var global = Object.create(Object.prototype, {
names: {
value: ['Barney', 'Trogdor'],
writable: false
}
});
global.names.push('Jackson'); // I expected a read-only error here
console.log(global.names[2]); // >> Jackson
global.names = ['Ooga', 'Booga']; // >> TypeError: "names" is read-only
속성 할당에 대해서만 보호 한 것으로 보입니다.
내 "쓸 수없는"배열을 수정하는 Array.push()
같은 것을 방지 할 수있는 방법이 있습니까? 당신이 무엇을 푸시 방법을 덮어 쓰지 왜 모든 데이터가로드되면
나는 또한 .splice() 등을 덮어 써야합니다. 이것은 바람직하지 않은 해결책입니다. – Jackson
사실,하지만 Object.seal(), 위대한 솔루션, [IE와 관련하여] 버전 9 +에만 적용됩니다 나는 이것에 대한 적절한 해결책을 알고 싶습니다. 아마도이 방법이 지원되지 않는 대체 방법은 해당 메소드를 덮어 쓰거나 배열에 대한 읽기 전용 액세스 만 제공하는 것입니다. –
IE5 +를 암시하는 ES5의 맥락에서이 질문을하고있었습니다. 나는'Object.seal()'을 대체 할 필요가 없다. 사실'.seal()'은'쓰기 가능 : false '가 존재한다는 것을 감안할 때 나에게별로 의미가 없다고 느낍니다. – Jackson