我正在为JavaScript中的元素创建定义一个简单的速记函数。目前,我有:
//simple creation function
function make(tag, style, id) {
var obj = document.createElement(tag);
if (style !== '' ) {
obj.style.cssText = style;
}
if (id !== undefined) {
obj.setAttribute('id',id);
}
return obj;
}
你打电话就够了:
var myDiv = make('div','float:right','myDiv');
但我真正想做的是定义一个带有更多可选属性的函数,类似于jQuery的创建函数,例如:
var $myDiv = $('<div>', {id: 'myDiv', style: 'float:right'});
如何将对象文字设置为make()
的参数之一并在函数中调用其值?
答案 0 :(得分:1)
Javascript对您设置函数参数的方式没有任何限制。只需在参数列表中调用对象文字,然后将其传入。
function make(tag, config) {
var obj = document.createElement(tag);
if (config.style !== '') {
obj.style.cssText = config.style;
}
if (config.id) {
obj.setAttribute('id', config.id);
}
return obj;
}
并称之为:
var myDiv = make('div', {style: 'float:right', id: 'myDiv'});
答案 1 :(得分:-1)
嗯,你可以这样做:
function initializeObjectWithProperties(options){
var newObject = {id:options.id};
newObject.prop = options.prop;
newObject.prop1 = options.prop1;
newObject.style = options.style;
return newObject;
}
initializeObjectWithProperties({id:0,prop:1,prop1:2,style:"MYSTYLE"})//returns newObject with all the properties and their corresponding values.
或不安全
function initializeObjectWithProperties(options){
var newObject = {}; //this could be an HTML object as well.
for (var i in options){
if (newObject[i] == undefined){
newObject[i] = options[i]; //
}
}
return newObject;//returns new object with all of option's properties
}
initializeObjectWithProperties({id:0,prop:1,prop2:2,anyRandomProp:"myRandomPropertyValue"});
虽然这种方法不安全,因为它也循环遍历Object
原型,但这个方法遍历了对象的所有属性。您可以使用这两种方法将属性添加到另一个对象。 Javascript的对象几乎可以存储所有内容。