1. 引入

1.1 讨论 window 和 return,引出插件开发

  1. // 1. 普通函数 return function
  2. function test() {
  3. var a = 1;
  4. function add () {
  5. a++;
  6. console.log(a);
  7. }
  8. return add;
  9. }
  10. var add = test();
  11. add();
  12. add();
  13. add();
  14. // 2. 普通函数 function 赋值给 window
  15. function test() {
  16. var a = 1;
  17. function add () {
  18. a++;
  19. console.log(a);
  20. }
  21. window.add1 = add;
  22. }
  23. test();
  24. add1();
  25. add1();
  26. add1();
  27. // 3. 立即执行函数 return function
  28. var add2 = (function() {
  29. var a = 1;
  30. function add () {
  31. a++;
  32. console.log(a);
  33. }
  34. return add;
  35. })();
  36. add2();
  37. add2();
  38. add2();
  39. // 4. 立即执行函数 function 赋值给window
  40. (function() {
  41. var a = 1;
  42. function add () {
  43. a++;
  44. console.log(a);
  45. }
  46. window.add3 = add;
  47. })();
  48. add3();
  49. add3();
  50. add3();

1.2 插件开发

  1. (function() {
  2. function Test() {
  3. }
  4. window.Test = Test;
  5. })();
  6. var test = new Test();

使用立即执行函数 隔离全局作用域,防止变量污染全局作用域

1.3 练习

  1. // 写一个插件,任意传两个数字,调用插件内部方法可进行加减乘除功能
  2. (function() {
  3. function Calc(opt) {
  4. this.x = opt.firstNum;
  5. this.y = opt.secondNum;
  6. }
  7. Calc.prototype.add = function(){
  8. console.log(this.x + this.y)
  9. }
  10. Calc.prototype.subtract = function(){
  11. console.log(this.x - this.y)
  12. }
  13. Calc.prototype.multiply = function(){
  14. console.log(this.x * this.y)
  15. }
  16. Calc.prototype.divide = function(){
  17. console.log(this.x / this.y)
  18. }
  19. window.Calc = Calc;
  20. })();
  21. var calc = new Calc({
  22. firstNum: 456,
  23. secondNum: 567
  24. });
  25. calc.add();