我有两个对象和一个数组。
我有一个包含值的数组:
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();
这会对我的代码产生什么影响?
答案 0 :(得分:0)
这个问题确实是一个关于设计的问题。在第一种情况下(将数组作为参数传入),您实现了低耦合。您的函数不需要知道它被调用的环境。如果由于某种原因,您需要使用另一个数组调用此对象,您可以自由地执行此操作。在第二个示例中,您的函数依赖于在该对象之外定义的a1数组。这会损害可重用性,但这可能不是问题,具体取决于项目的范围。最后,一切都是务实的。在我看来,将数组作为参数传递并不难,以防万一你需要在不同时间使用不同的数组。这只是一种很好的做法。