0

我有一堆带有 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

4 回答 4

1

Since they are already jQuery objects you don't need $. and you can use .add() like this :

var object = myobject1.add(myobject2).add(myobject3).add(myobject4).add(myobject5);
object.init(somvar)
于 2013-10-08T14:30:45.113 回答
1

只需使用

$[objectName].init(somevar);
于 2013-10-08T14:32:24.207 回答
0

in javascript, all objects are maps. it's really weird, but it means you can do this trick:

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

then, if you do:

console.log(obj.mypropertyname)

you'll get:

> somevalue
于 2013-10-08T14:32:15.080 回答
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 方法。

于 2013-10-08T14:37:42.377 回答