js中的this
his是Javascript语言的一个关键字。
它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。
随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
1、普通函数
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script> var x = 1; function test() { this.x = 2; alert(this.x); } test();//2,test()函数的this就是window,this===window返回true alert(x);//2 </script> </head> <body> </body> </html>
2、函数作为对象的方法调用,this就指向上级对象
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script> function test() { alert(this.x); } var o = {}; o.x = 1; o.m = test; o.m();//test方法中的this===o等于true,this指向调用test的上级对象o </script> </head> <body> </body> </html>
3、作为构造函数调用,所谓构造函数,就是通过函数new一个新对象,这是this就指向新对象。
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script> function test() { this.x=1; } var o = new test();//new一个对象(C#中new一个实例对象),调用无参构造函数,test中this指向新对象o alert(o.x); </script> </head> <body> </body> </html>
4、apply调用,apply()是函数对象的一个方法,apply的作用就是改变函数的调用对象,apply第一个参数就是表示改变后的调用这个函数的对象。所以this就是指的第一个参数
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script> var x = 0; function test() { alert(this.x); } var o = {}; o.x = 1; o.m = test; o.m.apply();//apply后test中this变成全局对象了,x结果为0 </script> </head> <body> </body> </html>

浙公网安备 33010602011771号