ES6 this指向

JavaScript中的this主要指当前对象。

1.在script中直接运行时,this指向window对象

2.在作为函数调用时,this指向window对象

3.在实例中作为方法调用时,this指向当前实例对象

如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
        var age=18;
        console.log(this.age);//script中直接使用this,this指向window,打印结果:18
        
    //定义构造函数
    function Person(){
        this.age=20;
    }
        //向原型中添加run方法
    Person.prototype.run=function(){
        console.log(this.age);
    }
    //作为实例对象方法调用方式
    var p1=new Person();//构造函数新建实例对象p1
    p1.run();//调用实例对象方法,this指向实例对象p1,打印结果:20
        
        //作为函数调用,this指向window
        var p1Method=p1.run;//将实例对象的run方法赋值给p1Method,p1Method此时就是一个函数
        p1Method();//运行函数p1Method(run()函数),打印结果:18
            /*
            var p1Method=p1.run;
            相当于
            var p1Method=function(){
                    console.log(this.age);
            }
            */
            
        
        //定义p2对象
    var p2={
        age:180,
        tellAge:function(){
            console.log(this.age);
        }
    }
    p2.tellAge();//调用实例对象方法,this指向实例对象p2,打印结果:180

            //作为函数调用,this指向window
        var p2Method=p2.tellAge;//将实例对象的run方法赋值给p1Method,p1Method此时就是一个函数
        p2Method();//运行函数p1Method(run()函数),打印结果:18
            /*
            var p2Method=p2.tellAge;
            相当于
            var p2Method=function(){
                    console.log(this.age);
            }
            */
    
        //总结
        //1.函数作为实例对象的成员,通过实例对象调用时为实例的成员方法(obj.method();),this指向实例对象
        //2.函数无论是在script中直接定义,还是对象中定义,不通过实例直接调用函数,this指向window
</script>
</html>

 

posted @ 2021-05-22 14:49  RoarInWind  阅读(116)  评论(0编辑  收藏  举报