Javascript 创建具有可在函数范围内外访问的属性的函数

Javascript 创建具有可在函数范围内外访问的属性的函数,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个功能: const fetchMovies = (function (query) { const requestId = this.requestId(query) return dispatch => { dispatch(sendingRequest(requestId)) return ajax.get(`/movies/search?q=${query}`) .then(res => { dispatch(rece

我有一个功能:

const fetchMovies = (function (query) {
  const requestId = this.requestId(query)
  return dispatch => {
    dispatch(sendingRequest(requestId))
    return ajax.get(`/movies/search?q=${query}`)
      .then(res => {
        dispatch(receievedResponse(requestId))
        return dispatch(addMovies(res.data.movies))
      })
  }
}).bind({
  requestId: (query) => `fetchMoviesLoading-${query}`
})
这使得
fetchMovies
函数能够在其内部调用
requestId
。但是,
requestId
属性不能像这样访问:

fetchMovies.requestId === undefined // true
是否有一种简单/干净的方法公开
requestId

这看起来很混乱:

const fetchMoviesContext = {
  requestId: (query) => `fetchMoviesLoading-${query}`
}

const fetchMovies = (function (query) {
  const requestId = this.requestId(query)
  return dispatch => {
    dispatch(sendingRequest(requestId))
    return ajax.get(`/movies/search?q=${query}`)
      .then(res => {
        dispatch(receievedResponse(requestId))
        return dispatch(addMovies(res.data.movies))
      })
  }
}).bind(fetchMoviesContext)
fetchMovies.requestId = fetchMoviesContext.requestId
只用

function fetchMovies(query) {
  const requestId = fetchMovies.requestId(query)
//                  ^^^^^^^^^^^
  return dispatch => {
    dispatch(sendingRequest(requestId))
    return ajax.get(`/movies/search?q=${query}`)
    .then(res => {
      dispatch(receievedResponse(requestId))
      return dispatch(addMovies(res.data.movies))
    })
  }
}
fetchMovies.requestId = (query) => `fetchMoviesLoading-${query}`;

不要使它过于复杂。

它看起来很凌乱,因为你想强制使用
这个
…你为什么要这样访问这个方法?你有用例吗?如果它是每个函数的一个属性,也许你应该用一个类替换你的函数