当前位置:Gxlcms > JavaScript > JS沙箱模式实例分析

JS沙箱模式实例分析

时间:2021-07-01 10:21:17 帮助过:22人阅读

本文实例讲述了JS沙箱模式。分享给大家供大家参考,具体如下:

  1. //SandBox(['module1,module2'],function(box){});
  2. /*
  3. *
  4. *
  5. * @function
  6. * @constructor
  7. * @param [] array 模块名数组
  8. * @param callback function 回调函数
  9. * 功能:新建一块可用于模块运行的环境(沙箱),自己的代码放在回调函数里,且不会对其他的个人沙箱造成影响
  10. 和js模块模式配合的天衣无缝
  11. *
  12. * */
  13. function SandBox() {
  14. //私有的变量
  15. var args = Array.prototype.slice.call(arguments),
  16. callback = args.pop(),
  17. //模块可以作为一个数组传递,或作为单独的参数传递
  18. modules = (args && typeof args[0] == "string") ? args : args[0];
  19. //确保该函数作为构造函数调用
  20. if (!(this instanceof SandBox)) {
  21. return new SandBox(modules,callback);
  22. }
  23. //不指定模块名和“*”都表示“使用所有模块”
  24. if (!modules || modules[0] === "*") {
  25. for(value in SandBox.modules){
  26. modules.push(value);
  27. }
  28. }
  29. //初始化所需要的模块(将想要的模块方法添加到box对象上)
  30. for (var i = 0; i < modules.length; i++) {
  31. SandBox.modules[modules[i]](this);
  32. }
  33. //自己的代码写在回调函数里,this就是拥有指定模块功能的box对象
  34. callback(this);
  35. }
  36. SandBox.prototype={
  37. name:"My Application",
  38. version:"1.0",
  39. getName:function() {
  40. return this.name;
  41. }
  42. };
  43. /*
  44. * 预定义的模块
  45. *
  46. * */
  47. SandBox.modules={};
  48. SandBox.modules.event=function(box){
  49. //私有属性
  50. var xx="xxx";
  51. //公共方法
  52. box.attachEvent=function(){
  53. console.log("modules:event------API:attachEvent")
  54. };
  55. box.dettachEvent=function(){
  56. };
  57. }
  58. SandBox.modules.ajax=function(box) {
  59. var xx = "xxx";
  60. box.makeRequest = function () {
  61. };
  62. box.getResponse = function () {
  63. };
  64. }
  65. SandBox(['event','ajax'],function(box){
  66. box.attachEvent();
  67. })

运行效果截图:

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。

人气教程排行