前言

我是歌谣 我有个兄弟 巅峰的时候排名c站总榜19 叫前端小歌谣 曾经我花了三年的时间创作了他 现在我要用五年的时间超越他 今天又是接近兄弟的一天人生难免坎坷 大不了从头再来 歌谣的意志是永恒的 放弃很容易 但是坚持一定很酷 微信公众号前端小歌谣

类笔记2

类中的所有代码都会在严格模式下执行 * 严格模式下其中一个特点就是,函数的this不在是window,而是undefined * * 注意: * 在类中方法的this不是固定的 * 以方法形式调用时,this就是当前的实例 * 以函数形式调用,this是undefined * 在开发时,在有些场景下,我们希望方法中的this是固定的,不会因调用方式不同而改变 * 如果遇到上述需求,可以使用箭头函数来定义类中的方法 * 如果类中的方法是以箭头函数定义的,则方法中的this恒为当前实例,不会改变

代码案例

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>类</title>
    <script>
        class MyClass{

            constructor() {
                // this.fn = this.fn.bind(this); 将fn方法的this绑定为当前实例
            }
            /*
            *   类中的所有代码都会在严格模式下执行
            *       严格模式下其中一个特点就是,函数的this不在是window,而是undefined
            *
            *   注意:
            *       在类中方法的this不是固定的
            *           以方法形式调用时,this就是当前的实例
            *           以函数形式调用,this是undefined
            *       在开发时,在有些场景下,我们希望方法中的this是固定的,不会因调用方式不同而改变
            *           如果遇到上述需求,可以使用箭头函数来定义类中的方法
            *           如果类中的方法是以箭头函数定义的,则方法中的this恒为当前实例,不会改变
            *
            * */

            // fn(){
            //     console.log('-->',this);
            // }

            fn = () => {
                console.log('-->',this);
            };

        }

        const mc = new MyClass();


        const test = mc.fn;

        mc.fn(); // mc
        test(); // undefined

        const fn2 = function (){
            console.log(this);
        };

        // fn2();


    </script>
</head>
<body>

</body>
</html>