构造函数中的对象字面量
object literals inside constructor
我正在为 JavaScript 中的元素创建定义一个简单的 shorthand 函数。目前,我有:
//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()
的参数之一并在函数中调用它的值?
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'});
嗯,你可以这样做:
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的对象几乎可以存储任何东西。
我正在为 JavaScript 中的元素创建定义一个简单的 shorthand 函数。目前,我有:
//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()
的参数之一并在函数中调用它的值?
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'});
嗯,你可以这样做:
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的对象几乎可以存储任何东西。