1

我正在开发一个小型 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
              });

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

4

3 回答 3

1

从这个答案复制代码

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, ...);

或者

var newObj = extend({}, obj1, obj2, obj3, ...); 
于 2013-07-31T12:16:45.663 回答
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});
于 2013-07-31T12:21:30.173 回答
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);
于 2013-07-31T12:28:08.153 回答