如何在Javascript的函数中使用选项对象

时间:2017-02-28 10:11:47

标签: javascript html function object

我正在尝试将输入作为一些参数的参数,

function write(param) {

 var str = param.str;
 var elem = param.elem; 
 document.getElementById(elem).innerHTML= str;
}

我将此作为参数传递,

write({
   elem:"op",
   str:"Hello"
});

我要做的就是我的字体标记为id'op',

<font id="op"></font>

当我运行它时,我不打印 Hello ,因为我已将 Hello 作为 op 元素的对象参数用于输出。< / p>

2 个答案:

答案 0 :(得分:1)

我不确定您的代码到底出了什么问题。在这里你可以看到你生成的javascript和html应该可以很好地协同工作。

&#13;
&#13;
function write(param) {

  var str = param.str;
  var elem = param.elem;
  document.getElementById(elem).innerHTML = str;
}

write({
  elem: 'op',
  str: 'Hello'
})
&#13;
<font id="op"></font>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

就我所见,您的代码按预期工作。

在功能上使用选项对象的答案:

在ES6中,默认参数可以防止值未定义,但它实际上并不能补偿您传递缺少参数的对象的情况。

在这种情况下,我建议使用Object.assign()

function write(options){
   options = Object.assign({}, {
       myDefaultParam: 'Hello',
       elem: null,
       str: ''
   }, options);

   if(options.elem) document.getElementById(options.elem).innerHTML = options.str;
}

Object.assign()做的是将默认选项的对象与提供的函数合并,允许您设置可依赖的默认参数。在这种情况下,write({})将导致选项成为此对象:

{
   myDefaultParam: 'Hello',
   elem: null,
   str: ''    
}

如果这对您来说太过分了,我建议您只需检查您的param对象上的键是否定义为:

function write(param){
   if(!param || !param.elem || !param.str) return false;
   return document.getElementById(param.elem).innerHTML = param.str;
}