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>