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

时间:2013-10-08 14:26:59

标签: javascript jquery oop

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

$.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);

感谢您的帮助! : - )

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

只需使用

$[objectName].init(somevar);

答案 2 :(得分:0)

在javascript中,所有对象都是地图。这真的很奇怪,但这意味着你可以做到这一点:

var p = "mypropertyname";
var obj = {};
obj[p] = somevalue;

然后,如果你这样做:

console.log(obj.mypropertyname)

你会得到:

> somevalue

答案 3 :(得分:0)

如果您的意思是想要遍历对象的名称,那么您应该知道不能将字符串与点表示法结合起来:

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方法。