【发布时间】:2015-06-18 17:56:28
【问题描述】:
我想知道这背后是否有理由,因为在我看来,如果将对象作为值传递,它会更加面向对象。实际上,它是对象的函数范围,就像原语一样。
通过引用传递对象只是为了优化目的吗?
【问题讨论】:
-
这与大多数(如果不是全部)OOP 语言没有区别。为什么传值会更OO?
-
如果你开始按值传递,这意味着克隆对象。如果需要克隆一棵大树,这可能是一项非常昂贵的操作
-
可能是因为每次通过对象时都必须对对象进行深度克隆?
-
@JamesThorpe 公平地说 - 很多时候你可以移动它而不是实际克隆它 - C++ 做到了(移动语义),它通常会带来非常好的性能。
-
@X.L.Ant 因为将全局对象分配给局部变量并不意味着对局部变量(即引用)的更改实际上是对全局对象的更改。然后它们将是对全局对象的本地克隆的更改。因此,本地和全局之间会有明显的区别。
标签: javascript scope