고려 다음과 같은 자바 스크립트 기능 (1) :자바 스크립트의 객체는 언제 구성됩니까?
function setData(domElement) {
domElement.myDataProperty = {
'suppose': 'this',
'object': 'is',
'static': 'and',
'pretty': 'big'
};
};
이제 제가이 기능을 좋아하지 않는다 동일한 객체가 함수가 호출 될 때마다 생성되는 것입니다. 객체가 변경되지 않으므로 오히려 한 번만 만들 것입니다. 스크립트가로드 dataObject
에 저장 될 때
var dataObject = {
'suppose': 'this',
'object': 'is',
'static': 'and',
'pretty': 'big'
};
function setData(domElement) {
domElement.myDataProperty = dataObject;
};
지금 개체가 한 번 생성됩니다 그래서 우리는 다음과 같은 조정 (2)를 만들 수 있습니다. 그러나 setData
이 가끔씩 만 호출된다고 가정 해 봅니다. 스크립트가로드되는 대부분의 시간 동안 함수가 사용되지 않습니다. 이 경우이 함수에 대해 마음에 들지 않는 것은 객체가 항상 사용되지 않을 때를 포함하여 항상 메모리에 만들어지고 유지된다는 것입니다. 당신이 이상적인 균형을 맞추기 위해 이렇게 할 수있을 것이라고 생각했습니다. (3) :
의미가 있습니까? 나는 인터프리터가 언제 객체를 만들지 결정하는 것에 달려 있다고 생각한다. !dataObject
조건을 통과 할 때까지 실제로 기다리지 않습니까? 아니면 기능에 들어가 스마트하게하려고 사전에 구성하기로 결정합니까? 아마도 Javascript 엔진마다 이와 관련하여 다른 정책이 있을까요?
물론 이러한 최적화가 실제로 중요한지 여부에 대한 질문이 있습니다. 분명히 이것은 객체의 크기, 엔진의 속도, 사용 가능한 리소스의 양 등과 같은 요소에 달려 있습니다.하지만 일반적으로 어느 것이 더 중요한 최적화라고 할 수 있습니다 : (1)에서 (2) 또는 (2)에서 (3)까지?
좋은 점이 있지만, 여기서는 일반적인 기능과 같이 여기서 결코 바뀌지 않을 객체에 대해 이야기하고 있다는 것을 명심하십시오. –
은 중요하지 않습니다. JS는 변경 될 수 있다고 말합니다. 변경하지 않으려는 사실은 부적절합니다. 당신은 '돌아올 것을 기대할 것입니까? 1,2,3]; 예를 들어 언제나 같은 객체를 반환 할 것인가? – olliej