2013-07-31 29 views
1

我正在开发一个小型JavaScript框架,我需要知道如何向函数添加一些选项,以便用户可以为特定方法设置自己的设置。在以后可以使用的JavaScript函数中添加选项

这是一个样本函数方法我已创建

$.prototype = { 
    setCenter: function() { 

     this.e.style.position = 'absolute'; 
     this.e.style.top = '50%'; 
     this.e.style.left = '50%'; 
     this.e.style.marginLeft = '-50px'; 
     this.e.style.marginTop = '-50px'; 
     return this; 



    } 
}; 

我期待这是用来处理下面的集的选项。

*我没有使用JQuery,我需要一个纯JavaScript解决方案。 这是一个示例代码,可能不是真实的东西,但只是明白了。

$('sampleDiv').setCenter({ 
       animate:true, fade:true 
       }); 

帮助我解决这个问题,我很欣赏的人谁试图回答这个问题。谢谢 !

+1

你的第二个代码没有任何意义。 –

+0

你使用jquery插件吗? –

+2

这听起来像你正在寻找类似于jQuery的“扩展”的选项,例如:'$ .extend({foo:“a”,“bar”:“b”},{foo:“extended”})'= > {{foo:“extended”,“bar”:“b”}'。这是准确的吗? –

回答

1

你可以实现你的主要功能是这样的:

this.doSomething = function() { 
    var getDefault = function(args, property, otherwise) { 
      return args[property] !== undefined ? args[property] : otherwise; 
    }; 

    this.foo = getDefault(arguments, 'foo', 42); 
    this.bar = getDefault(arguments, 'bar', false); 
}; 

所以,你可以调用它像:

this.doSomething({foo: true}); 
1

this answer

function extend(){ 
    for(var i=1; i<arguments.length; i++) 
     for(var key in arguments[i]) 
      if(arguments[i].hasOwnProperty(key)) 
       arguments[0][key] = arguments[i][key]; 
    return arguments[0]; 
} 

此功能可被用于任何数量的对象复制的代码。

var newObj = extend(obj1, obj2, obj3, ...); 

OR

var newObj = extend({}, obj1, obj2, obj3, ...); 
1
$.prototype = { 
    setCenter: function(offset) { 

     this.e.style.position = 'absolute'; 
     this.e.style.top = '50%'; 
     this.e.style.left = offset + 50 + '%'; 
     this.e.style.marginLeft = '-50px'; 
     this.e.style.marginTop = '-50px'; 
     return this; 
    } 
}; 

像这样使用

this.setcenter(23); 
相关问题