Javascript对象自定义函数
可能重复:Javascript对象自定义函数,javascript,object,prototype,extend,Javascript,Object,Prototype,Extend,可能重复: 我有一个基本函数,我想控制最终会变成“颠簸盒”的东西。我的目标是实例化多个实例,并为每个声明的变量提供一个自定义配置 该对象如下所示: Project.Modules.bumpbox = function(in_trigger, container) { var config = { 'speed': 500, 'easing' : false,//will 'in_callback': false,
我有一个基本函数,我想控制最终会变成“颠簸盒”的东西。我的目标是实例化多个实例,并为每个声明的变量提供一个自定义配置 该对象如下所示:
Project.Modules.bumpbox = function(in_trigger, container) {
var config = {
'speed': 500,
'easing' : false,//will
'in_callback': false,
'out_callback' : false,
'visible': false,
'out_trigger' : $('#bumpbox_out_trigger'),//this is set by default only change if you know what you are doing!
};
this.test = function() {
//this should be the default function.
};
bumpbox_controllers[i]['test'] = function() {
alert(i);
}
然后,从另一个文件中,我想实例化一个实例,如new Project.Modules.Bumpbox(),并覆盖测试函数
var bumpbox_controllers = {
"map" : new Project.Modules.bumpbox($('#navigation_top li.map'), $('.bumpbox.map')),
"contact" : new Project.Modules.bumpbox($('#navigation_top li.contact'), $('.bumpbox.contact')),
"about" : new Project.Modules.bumpbox($('#navigation_left li.about'), $('.bumpbox.about')),
"team" : new Project.Modules.bumpbox($('#navigation_left li.team'), $('.bumpbox.team')),
"careers" : new Project.Modules.bumpbox($('#navigation_left li.careers'), $('.bumpbox.careers')),
"services" : new Project.Modules.bumpbox($('#navigation_left li.services'), $('.bumpbox.services'))
};
然后我想循环这些函数,并在每个函数中设置一个自定义test()函数,如下所示:
Project.Modules.bumpbox = function(in_trigger, container) {
var config = {
'speed': 500,
'easing' : false,//will
'in_callback': false,
'out_callback' : false,
'visible': false,
'out_trigger' : $('#bumpbox_out_trigger'),//this is set by default only change if you know what you are doing!
};
this.test = function() {
//this should be the default function.
};
bumpbox_controllers[i]['test'] = function() {
alert(i);
}
但当我运行此代码时,它会将所有元素切换到最后一个调用的I值,在本例中为“service”,而不是给每个元素一个唯一的元素。要允许每个test()
都有自己唯一的I
,请尝试:
bumpbox_controllers[i]['test'] = (function (i) {
return function () {
alert(i);
};
}(i));
您似乎需要为您的循环设置一个:
for (var controller in bumpbox_controllers) {
bumpbox_controllers[controller] = (function(i) {
// creating a new context for i
return function() {
alert(i); // access the i in scope, not the controller
}
})(controller);
}
这很有效。谢谢