JavaScript:如何通过值传递对象?
- 论坛
- JavaScript:如何通过值传递对象?
24 浏览
JavaScript:如何通过值传递对象?
- 在JavaScript中,当将对象作为参数传递时,它们是通过引用传递的,这使得创建对象的本地副本变得困难。
var o = {}; (function(x){ var obj = x; obj.foo = 'foo'; obj.bar = 'bar'; })(o)
o
将具有.foo
和.bar
。 - 可以通过克隆来解决这个问题;以下是一个简单的示例:
var o = {}; function Clone(x) { for(p in x) this[p] = (typeof(x[p]) == 'object')? new Clone(x[p]) : x[p]; } (function(x){ var obj = new Clone(x); obj.foo = 'foo'; obj.bar = 'bar'; })(o)
o
将不会有.foo
或.bar
。
问题
- 是否有更好的方法来按值传递对象,而不是创建本地副本/克隆?