你的位置:首页 > Java教程

[Java教程]Js~(function(){})匿名自执行方法的作用


匿名自执行方法体(function(){})经常用在设计JS插件上面,它定义相关组件的行为,自动初始化相关属性,而且在页面中可以直接执行,你不需要手动执行它,它被自动被执行!

在设计你的匿名自执行方法体时,我们有几点需要注意,在这里大叔部总结了一下,请看下面说明

  • 将它的结果赋给一个对象
  • 如果它没有返回值,那希望使用它的内部对象,需要这个对象是公共的(即不可var)
  • 可以将它定义成一个自执行的属性体

具体介绍这三点

将它的结果赋给一个对象

  var ar = (function () {      var PageMap = function () { console.log("初始化") };      PageMap.prototype = {        get: function (page) {          return page;        },        set: function (page, value) {          console.log("set");        },        has: function (page) {          return false;        },        clear: function () {          console.log("clear");        }      };      return PageMap;    })();    var a = new ar();    a.set(1, "OK");

如果它没有返回值,那希望使用它的内部对象,需要这个对象是公共的

 (function (option) {      option = option || { id: 0, pages: [] };      var pages = [];      Maps = function () {        console.log("maps init...");      };      //扩展方法      Maps.prototype = {        keys: function () {          return pages[id] != undefined;        },        get: function (id) {          return pages[id];        },        set: function (value) {          pages.splice(value);          pages.push(value);        },        append: function (value) {          pages.push(value);        },        each: function () {          console.log("eache pages result");          for (var item in pages)            console.log(pages[item]);        }      };    })();    var arr = new Maps();    arr.append(1);    arr.append(2);    arr.append(3);    arr.each();

可以将它定义成一个自执行的属性体

    var test = ({      // 这里你可以定义常量,设置其它值, 自动运行      width: 480,      height: 640,      // 当然也可以定义utility方法      getMax: function () {        return this.width + "x" + this.height;      },      // 初始化      init: function () {        console.log(this.getMax());        // 更多代码...      },      print: function () {        console.log(this.getMax());      }    }); // 这样就开始初始化咯    test.init();    test.print();

而对于以后我们的JS组件的设计,可以很好的利用它的这些特点,即自执行