3.改变this指向的方法.js 1011 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. // function fn1(x,y) {
  2. // var sum = x + y;
  3. // console.log(sum,'sum');
  4. // console.log(this,'1');
  5. // console.log(this.name,'2');
  6. // }
  7. // var obj = {
  8. // name: 'LiLi'
  9. // }
  10. // fn1(1,2)
  11. // fn1.call(obj,1,2);
  12. // 改变this指向的方法
  13. // 1.call(修改的this指向,参数1,参数2)
  14. // 2.apply(修改的this指向,[参数1,参数2])
  15. // 3.bind(修改的this指向,参数1,参数2)()
  16. // 区别:
  17. // 1.bind不会直接调用函数方法,apply和call会直接调用函数
  18. // 2.call 第二个参数开始,需要将传入的参数都逐个列出来
  19. // 3.apply第二个参数开始,需要将传入的参数放在数组里
  20. // function fn2(a,b) {
  21. // var sum = a*b;
  22. // console.log(sum);
  23. // console.log(this);
  24. // }
  25. // var obj1 = {
  26. // sex: '女'
  27. // }
  28. // fn2(2,3);
  29. // fn2.apply(obj1,[2,3])
  30. function fn3(y,z) {
  31. var sum = y - z;
  32. console.log(sum);
  33. console.log(this);
  34. console.log(this.age);
  35. }
  36. var obj2 = {
  37. age:'100+'
  38. }
  39. fn3(10,2);
  40. fn3.bind(obj2,10,2)();