깊은 개체를 통해 재귀 지점을 이해하면 해당 요소의 모든 하위 속성에서 얕은 Object.freeze
을 수행합니다. 함수 객체의 값을 고정시키는 것은 무엇입니까? 상위 레벨에서 얕은 동결 때문에 참조가 이미 고정되었습니다. 함수 객체의 값 자체를 변형 할 수 있습니까?Object.freeze 함수에 어떤 이유가 있습니까?
예 :
// Library Function [deepFreeze source](https://github.com/substack/deep-freeze/blob/master/index.js)
function deepFreeze (o) {
Object.freeze(o); // shallow freeze the top level
Object.getOwnPropertyNames(o).forEach(function (prop) {
if o[prop] != null // no point freezing null or undefined
&& (typeof o[prop] === "object" || typeof o[prop] === "function") {
deepFreeze(o[prop]);
}
});
return o;
};
// Usage
var x = {
y: [1,2,3],
z: function(){}
};
deepFreeze(x);
그냥 내가 여기에 이해하지 못하는 근본적인 뭔가가 있는지 시도 또는이 경우 단지 함수 객체, 예를 들어, 돌연변이에 대한 보호된다
x.z.foo = 3
합니다.
함수는 여전히 확장 할 수있는 객체입니다. 당신의 딜레마는 무엇입니까? – MaxArt
함수는 JS의 Object이기도합니다 (실행될 수있는 하나의 함수). 다른 객체와 마찬가지로 추가 속성으로 확장 할 수 있습니다. – Thomas
함수는 속성을 추가/제거 할 수있는 개체입니다. 따라서 일반적으로 객체가 완전히 고정되기를 원하면 모든 함수를 고정시키고 싶을 것입니다. –