javascript - 如何在对象上定义函数并仍然能够运行它来设置初始对象属性

标签 javascript

下面的代码会引发错误,指出 this.getDateString() 不是一个函数。

const Model = function () {

  let dateParam = this.getDateString();

  this.getDateString = function() {
    let year = date.getFullYear();
    let month = date.getMonth()+1;
    let day = date.getDate();
    return year+"-"+month+"-"+day;
  }
}

我认为这是因为该函数没有被提升,所以当我在文件开头运行它时它不存在。我当然可以更改函数定义:

const Model = function () {

  let dateParam = getDateString();

  function getDateString() {
    let year = date.getFullYear();
    let month = date.getMonth()+1;
    let day = date.getDate();
    return year+"-"+month+"-"+day;
  }
}

但我不想这样做,因为其他函数正在使用 Model 对象外部的函数。这里有什么特殊的技巧可以使用吗?也许将函数定义移到顶部?有更好的办法吗?

最佳答案

只需在 this 上添加此属性并分配该函数

const Model = function () {

  let dateParam = getDateString();

  this.getDateString = getDateString;
  function getDateString() {
    let year = date.getFullYear();
    let month = date.getMonth()+1;
    let day = date.getDate();
    return year+"-"+month+"-"+day;
  }
}

关于javascript - 如何在对象上定义函数并仍然能够运行它来设置初始对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50320418/

相关文章:

javascript - 服务器端生成的 javascript 数组抛出未终止的字符串文字

javascript - 如何使用 Javascript 设置 "-webkit-transition-timing-function"?

javascript - float:使所有 Y 轴的刻度线对齐

javascript - jQuery 逗号分隔字符串到对象映射

javascript - 根据动态值生成梯度步长,包括小数

javascript - 为每个 DOM 元素应用随机化的 CSS

javascript - jQuery + 返回被单击元素的函数

javascript - 是否建议在 .each() 中放置一个函数?

javascript - 为什么 useEffect 没有被触发?

javascript - 在我的 WHERE 上使用 IN chop 不正确的 DOUBLE 值