JS基础(九) this

<script>

        function Student(name, age){

            // 构造函数里面的this,用于给类定义成员(属性和方法)

            this.name = name

            this.age = age

            this.show = function() {

                // 方法里面的this指向方法的调用者

                console.log(`${this.name},${this.age}岁`);

           }

        }

        let s1 = new Student('张三', 20)

        s1.show()

        console.log('-'.repeat(50));

        let obj1 = {

            name: '张三',

            age: 20,

            sayHi: function() {

                console.log(`${this.name},${this.age}岁`);

            }

        }

        // 注意:obj1调用sayHi()方法,所以sayHi()方法里面的this执行obj1

        obj1.sayHi()  // 张三,20岁

        // 使用var定义的成员(变量和方法)都会成为window对象的成员

        var name = '陈浩南'

        var age = 30

        // let fun1 = obj1.sayHi

        var fun1 = obj1.sayHi

        // console.log(fun1);

        console.log(window.fun1);

        /* 控制台打印输出fun1的结果

            ƒ (){

                console.log(`${this.name},${this.age}岁`);

            }

        */

        // fun1()  // 陈浩南,30岁

        window.fun1()  // 陈浩南,30岁

        console.log('-'.repeat(50));

        let obj2 = {

            name: '李四',

            age: 22,

            sayHi: () => {

                // 注意:箭头函数中没有this,如果在箭头函数中使用了this,会向外层寻找this的指向

                // 如果所有的外层都没有this,最终会指向window对象。

                console.log(`大家好!我叫${this.name},今年${this.age}岁`);

            }

            // 如果出现闭包,this的情况也与上面两种情况不一样

        }

        obj2.sayHi()

        // window.obj2.sayHi()

        console.log('-'.repeat(50));

        let obj3 = {

            name: '王五',

            age: 24,

            sayHello: function(){

                console.log('Hello everyone!');

                let sayHi = () => {

                    console.log(`大家好!我叫${this.name},今年${this.age}岁`);

                }

                return sayHi

            }

        }

        // obj3.sayHello()

        obj3.sayHello()()

        // Hello everyone!

        // 大家好!我叫王五,今年24岁

    </script>

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容