我正在开发一个小型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
});
帮我解决这个问题,我很感激任何试图回答此问题的人。谢谢!
答案 0 :(得分: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, ...);
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);