03.this.html 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script>
  9. /*
  10. 解析器在调用函数时,每次都会向函数内部传递进一个隐含的参数
  11. 这个隐含的参数就是this,this指向的是一个对象,
  12. 这个对象我们称为函数执行的上下文对象,
  13. 根据函数的调用方式的不同,this会指向不同的对象
  14. 1.以函数的形式调用时,this永远都是window
  15. 2.以方法的形式调用时,this就是调用方法的那个对象
  16. */
  17. // function fun(a,b){
  18. // // console.log("a="+a,"b="+b);
  19. // console.log(this);
  20. // }
  21. // fun(12,23);
  22. function fun(a,b){
  23. console.log(this.name);
  24. }
  25. //创建一个对象
  26. var obj = {
  27. name:"孙悟空",
  28. sayName:fun
  29. };
  30. obj.sayName();
  31. var obj2 = {
  32. name:"二师兄",
  33. sayName:fun
  34. };
  35. // console.log(obj.sayName == fun);//结果为true
  36. var name = "全局的name属性";
  37. //以方法的形式调用,this是调用方法的对象
  38. obj2.sayName();//输出结果为“二师兄”
  39. //以函数的形式调用,this是window
  40. fun();//相当于window.fun(),输出结果为"全局的name属性"
  41. //以方法的形式调用,this是调用方法的对象
  42. obj.sayName();
  43. </script>
  44. </head>
  45. <body>
  46. </body>
  47. </html>