'class'语法在javascript中如何工作?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了'class'语法在javascript中如何工作?相关的知识,希望对你有一定的参考价值。

[我正在为React Native应用构建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类语法中,基本上只是一个使用其他原型创建对象的函数?

还可以就哪种方法“更好”提出意见吗?

谢谢

答案
就像任何其他编程语言一样,类实质上只是遵循面向对象的方法。除了语法和理解方式外,实际上并没有什么区别。

特别是在JavaScript中,一个关键区别是使用constructor函数从类创建对象。以后可以跟踪此构造函数,而常规函数则不会发生。从技术上讲,JavaScript甚至没有“类”。 ES6中添加了类语法,这几乎是标准的函数。

关于哪种方法最好,这取决于您。我认为,少即是多,而简单性和可读性是编程中最重要的事情。我会熟悉这两种方法,尤其是由于前钩时代和当前的钩子趋势,如果您计划与React一起使用的话。

另一答案
我建议尽可能不使用类(使用Javascript),请在factory functions with fun fun function上观看此视频,以了解通常为什么工厂功能更好的原因。 Class.prototype可能很棘手,而javascript中的“ this”关键字可能很棘手,而没有使用.bind(this)正确绑定方法调用。 React甚至将您的方法绑定到类中。

这并不是说类在任何方面都是不正确的,只是在javascript中它们可能不必要地变得复杂。

以上是关于'class'语法在javascript中如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

react之jsx语法规则

react之jsx语法规则

如何用jquery实现点击div更换class?

[UE4插件使用-问题合集-02] error C4458: declaration of 'ModuleIndex' hides class member 函数参数使用的参数名字与

如果编c 出现'class' type redefinition怎么修改

jQuery $('[id$=cbxDelete]')是啥意思?