发送参数之类的对象或直接在javascript

时间:2015-09-08 16:02:01

标签: javascript arrays

我有两个对象和一个数组。

我有一个包含值的数组:

var a1 = ['case1','case2','case3'];

然后在另一个对象中,我通过将其作为context传递来处理数组。

var obj2 = {
    init: function(context){
       for( var elem in context) {
          // do stuff with the elements
       }
    }
}

我还有另一个对象,我以相同的方式传递对象。

var obj3 = {
    init: function(context){
       for( var elem in context) {
          // do stuff with the elements
       }
    }
}

然后我执行init函数:

obj2.init(a1);
obj3.init(a1);

我可以这样做的另一种方法如下所示,不将数组传递给init函数,只是直接引用数组。

var obj2 = {
    init: function(){
       for( var elem in a1) {
          // do stuff with the elements and access directly to the obj1 array
       }
    }
}
var obj3 = {
    init: function(){
       for( var elem in a1) {
          // do stuff with the elements and access directly to the obj1 array
       }
    }
}

obj2.init();
obj3.init();

这会对我的代码产生什么影响?

1 个答案:

答案 0 :(得分:0)

这个问题确实是一个关于设计的问题。在第一种情况下(将数组作为参数传入),您实现了低耦合。您的函数不需要知道它被调用的环境。如果由于某种原因,您需要使用另一个数组调用此对象,您可以自由地执行此操作。在第二个示例中,您的函数依赖于在该对象之外定义的a1数组。这会损害可重用性,但这可能不是问题,具体取决于项目的范围。最后,一切都是务实的。在我看来,将数组作为参数传递并不难,以防万一你需要在不同时间使用不同的数组。这只是一种很好的做法。