在JavaScript函数中添加可以在以后使用的选项

时间:2013-07-31 11:56:46

标签: 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
              });

帮我解决这个问题,我很感激任何试图回答此问题的人。谢谢!

3 个答案:

答案 0 :(得分: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 :(得分: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});

答案 2 :(得分: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);