JavaScript:如何通过值传递对象?

8 浏览
0 Comments

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


问题

  1. 是否有更好的方法来按值传递对象,而不是创建本地副本/克隆?
0