Javascript 如何使用变量调用对象及其方法
我有一堆jQuery对象和一个init方法,所以现在我有类似的东西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
$.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)应该为第二个代码段执行您想要的操作。