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}`;
不要使它过于复杂。它看起来很凌乱,因为你想强制使用
这个
…你为什么要这样访问这个方法?你有用例吗?如果它是每个函数的一个属性,也许你应该用一个类替换你的函数