构造函数中的对象文字

时间:2016-01-23 22:40:23

标签: javascript jquery literals

我正在为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()的参数之一并在函数中调用其值?

2 个答案:

答案 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的对象几乎可以存储所有内容。