Javascript 如何使用变量调用对象及其方法

Javascript 如何使用变量调用对象及其方法,javascript,jquery,oop,Javascript,Jquery,Oop,我有一堆jQuery对象和一个init方法,所以现在我有类似的东西 $.myobject1.init(somevar); $.myobject2.init(somevar); $.myobject3.init(somevar); $.myobject4.init(somevar); $.myobject5.init(somevar); // somevar is the same var in all the calls var objectName = "myobject1"; // or

我有一堆jQuery对象和一个init方法,所以现在我有类似的东西

$.myobject1.init(somevar);
$.myobject2.init(somevar); 
$.myobject3.init(somevar);
$.myobject4.init(somevar);
$.myobject5.init(somevar); // somevar is the same var in all the calls
var objectName = "myobject1"; // or any other object name
$. objectName .init(somevar);
但是我正在寻找一种方法来简化这个代码,类似这样的东西

$.myobject1.init(somevar);
$.myobject2.init(somevar); 
$.myobject3.init(somevar);
$.myobject4.init(somevar);
$.myobject5.init(somevar); // somevar is the same var in all the calls
var objectName = "myobject1"; // or any other object name
$. objectName .init(somevar);

谢谢你的帮助!:-)

因为它们已经是jQuery对象,所以不需要$。您可以像这样使用.add():

var object = myobject1.add(myobject2).add(myobject3).add(myobject4).add(myobject5);
object.init(somvar)

在javascript中,所有对象都是映射。这真的很奇怪,但这意味着你可以做这个把戏:

var p = "mypropertyname";
var obj = {};
obj[p] = somevalue;
然后,如果您这样做:

console.log(obj.mypropertyname)
您将获得:

> somevalue
只用

$[objectName].init(somevar);

如果您的意思是要循环遍历对象的名称,那么您应该知道不能将字符串与点符号组合:

var someObj = {
    subObj: {
        a: 5
    }
};

someObj.subObj.a === 5;       // true
someObj."subObj".a === 5;     // throws error
someObj["subObj"].a === 5;       // true

var propName = "subObj";

someObj[propName].a === 5;       // true
但可以使用方括号表示法的字符串:

var someObj = {
    subObj: {
        a: 5
    }
};

someObj.subObj.a === 5;       // true
someObj."subObj".a === 5;     // throws error
someObj["subObj"].a === 5;       // true

var propName = "subObj";

someObj[propName].a === 5;       // true

因此,您可以使用它通过for循环遍历对象名,也可以使用其他答案中建议的jQuery方法。

是否使用
$[objectName].init()
无效?答案的可能重复看起来不错,但如果您确实想使用字符串,请记住在javascript中foo.bar==foo[“bar”]。因此,$[“myobject1”].init(somevar)应该为第二个代码段执行您想要的操作。