객체가 함수로 전달되면 해당 객체는 값으로 전달되지만 객체의 값은 참조입니다. 매우 큰 객체를 내 함수로 전달하지만 함수 내에서 소수의 속성 (6-12) 만 액세스합니다. Memorywise, 전체 개체 대신 속성을 전달하는 것이 더 낫습니까? 아니면 내 속성이 문자열 인 경우 실제로 더 많은 메모리 문제가 발생합니까?함수에 전달 된 객체의 메모리 사용량/가비지 컬렉션
아래의 두 함수가 주어지면 메모리는 어떻게됩니까? f1에서 javascript/v8은 메모리에 새로운 객체 foo를 만들거나 정말로 포인터일까요? 문자열 속성에 액세스하거나 V8에서 함수 내에서 사용하기 위해 해당 문자열의 복사본을 만드는 경우 포인터로만 남아 있습니까? f2에서는 문자열 foo의 완전히 새로운 복사본이 함수에 대해 만들어진 것으로 가정합니다. 이것은 올바른 가정입니까?
function f1(x) {
var y = x.foo;
}
function f2(foo) {
var y = foo;
}
var obj = {foo: "test"};
f1(obj);
f2(obj.foo);
예, * 값은 단지 포인터입니다. 문자열이 없기 때문에 문자열을 변경할 수 없기 때문에 복사본이 만들어졌습니다. 다시 메모리에 대한 포인터 일뿐입니다. – Bergi