2013-10-08 34 views
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); 

感谢您的帮助! :-)

+1

'$ [objectName] .init()'不起作用吗? – SmokeyPHP

+0

可能的重复[如何引用一个JavaScript对象属性与连字符?](http://stackoverflow.com/questions/7122609/how-do-i-reference-a-javascript-object-property-with -a-hyphen-in-it) – Quentin

+0

答案看起来不错,但如果你确实想用字符串来做,请记住在javascript foo.bar == foo [“bar”]中。所以$ [“myobject1”] .init(somevar)应该做你想要的第二个代码段。 –

回答

1

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

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

在javascript中,所有对象都是地图。这是很奇怪的,但它意味着你可以做这种伎俩:

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

那么,如果你这样做:

console.log(obj.mypropertyname) 

你会得到:

> somevalue 
1

只需使用

$[objectName].init(somevar); 
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方法。

相关问题