当一个对象被传递给一个函数时,该对象是按值传递的(尽管对象的值是一个引用)。我将非常大的对象传递到我的函数中,但只能从函数内部访问少数属性(6-12)。内存方面,只传递属性而不是整个对象会更好吗?或者如果我的属性是字符串,这实际上会产生更多的内存问题吗?
给定下面的两个函数,内存会发生什么?在 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);