Я работаю над созданием службы API для собственного приложения реагирования, и мне любопытно, в чем разница между функцией, которая устанавливает экземпляры, а затем возвращает объект с замыканиями вокруг функций API, например:
export default AuthApiService = (bearerToken) => {
const instance = axios.create({
baseURL: `http://${BASE_URL}`,
timeout: 5000,
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${bearerToken}`
}
})
const signup = async (email, password) => {
try {
const response = await instance.post(`/users`, {
email,
password
})
return response.data
} catch (err) {
console.log('error in signup api call', err, err.response)
throw err
}
}
const facebookLogin = async () => {
try {
} catch (err) {}
}
return {
signup,
facebookLogin
}
}
и класс, который создает объект с синтаксисом конструктора и имеет прямой доступ к методам объекта следующим образом:
export default class AuthApiService {
constructor(bearerToken) {
this.instance = axios.create({
baseURL: `http://${BASE_URL}`,
timeout: 5000,
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${bearerToken}`
}
})
}
signup = async (email, password) => {
try {
const response = await this.instance.post(`/users`, {
email,
password
})
return response.data
} catch(err) {
console.log('error in signup api call', err, err.response)
throw err
}
}
facebookLogin = async () => {
try {
} catch(err) {
}
}
}
В синтаксисе класса javascript в основном просто функция, которая создает объект сдругой прототип?
Также, если бы вы могли высказать мнение о том, какой подход "лучше"?
Спасибо