JS对象中的方法的this指向

<script>
            // 对象里的方法写的是箭头函数,this始终访问全局
            var name = "xiaoming";
            var obj1 = {
                name: "xiaohong",
                getName: () => {
                    console.log(this.name);
                },
            };
            obj1.getName(); // xiaoming
            let getName1 = obj1.getName;
            getName1(); // xiaoming
            let getName11 = obj1.getName.bind(obj1);
            getName11(); // xiaoming

            // 对象的方法写的 function 声明,直接调用 this 指向对象本身,将调用的方法单独保存起来调用,this 指向全局,通过bind 改写 this 指向后,可以继续指向 对象本身
            var obj2 = {
                name: "xiaohong",
                getName: function () {
                    console.log(this.name);
                },
            };
            obj2.getName(); // xiaohong
            let getName2 = obj2.getName;
            getName2(); // xiaoming
            let getName22 = obj2.getName.bind(obj2);
            getName22(); // xiaohong
              obj2.getName.call(obj2); // xiaohong

</script>

 

posted @ 2022-06-10 16:36  蓓蕾心晴  阅读(136)  评论(0编辑  收藏  举报