关于对象中的this指向

1、关于对象中的this指向问题

<script>
window.test1 = '试验文字1';
        window.test2 = '试验文字2';
        var obj = {
            test3: '试验文字3',
            getName: function() {
                // 不能正常输出
                // 该方法相当于是obj调用,所以this是指向obj
                console.log(this.test1);
                // 能正常输出
                console.log(this.test3);
                return function() {
                    // 能正常输出
                    // 在调用getName方法是生成了一个函数,位于全局作用域下,所以该方法的调用者是window,this也就指向了window
                    console.log(this.test2)
                }
            }
        }
        obj.getName()();
</script>

2、对象中的普通函数和箭头函数中的this指向

<script>
        window.winTest = 'winTest';
        var obj1 = {
            objTest: 'objTest',
            // 普通函数this指向其调用者,fun1的调用者是obj1
            fun1: function() {
                console.log(this.objTest)
            }
        }
        var obj2 = {
            // 箭头函数本身不指定this,而是根据上下文的this确定,即obj2的调用者。obj2的调用者是window,所以this指向window
            fun2: () => {
                console.log(this.winTest)
            }
        }
        obj1.fun1();
        obj2.fun2();
        var obj3 = {
            name: this.winTest
        }
        console.log(obj3.name)
    </script>

猜你喜欢

转载自www.cnblogs.com/lhseo/p/12687834.html