【问题标题】:How to use options object in Javascript's Function如何在 Javascript 函数中使用选项对象
【发布时间】:2017-02-28 10:11:47
【问题描述】:

我正在尝试将输入作为某些对象的参数,

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 元素用于输出。

【问题讨论】:

  • Works for me。也许不要使用font,它已被弃用。

标签: javascript html function object


【解决方案1】:

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

function write(param) {

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

write({
  elem: 'op',
  str: 'Hello'
})
&lt;font id="op"&gt;&lt;/font&gt;

【讨论】:

  • 存在不可重现的密切原因。
【解决方案2】:

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

在函数上使用选项对象的答案:

在 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({}) 将导致 options 成为这个对象:

{
   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;
}

【讨论】:

    猜你喜欢
    • 2022-09-29
    • 2014-10-10
    • 1970-01-01
    • 2022-01-24
    • 2013-01-16
    • 2019-01-27
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多