今天我了解到,如果例如我有一个对象:
var foo = {a: 1, b: { ... }}
Run Code Online (Sandbox Code Playgroud)
我将它传递给一个函数:
function test(foo) {
foo.b
}
Run Code Online (Sandbox Code Playgroud)
它必须将整个foo对象加载到函数的作用域中才能访问该b属性,这会增加内存消耗。
书中的建议是始终只传递您需要的内容:
function test(b) {
b
}
test(foo.b)
Run Code Online (Sandbox Code Playgroud)
我的问题是这样吗?为什么?对象是通过引用传递的。
它必须将整个 foo 对象加载到函数的作用域中才能访问 b 属性,这会增加内存消耗。
这是错误的。如你所说
对象是通过引用传递的。
因此,在这两种情况下,都会传递一个引用,这将消耗相同的内存(如果有的话)。
书中的建议是始终只传递你需要的东西
这对于干净的设计来说是一种很好的做法。
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |