版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、6-模块与模式私有/公开字段、模块、揭示模块2015 Spring, 本章内容 JavaScript中的公有/私有字段 模块模式 揭示模块模式 揭示原型模式 单例模式公有/私有字段使用函数作用域公有/私有字段 每个变量被定义为: 在全局作用域(公有) 在函数作用域(私有)var global = 5;function myFunction() var private = global;function innerFunction()var innerPrivate = private;公有/私有字段 演示模块模式隐藏成员优缺点 优点: 模块化代码至可重用对象 变量/函数不在全局命名空间中 只暴
2、露公有成员 缺点: 不易扩展 调试有问题模块模式:结构 结构:var module = (function () /私有变量/私有函数return /公有成员someFunc: function() ,anotherFunc: function() ;();模块模式:示例var controls = (function () /hidden members function formatResult(name, value) / /visible members return Calculator: function (name) var result; result = 0; this.ad
3、d = function (x) / ; this.subtract = function (x) /; this.showResult = function () / ; ;();var calc = new controls.Calculator(First);calc.add(7);calc.showResult();模块模式:示例var controls = (function () /hidden members function formatResult(name, value) / /visible members return Calculator: function (nam
4、e) var result; result = 0; this.add = function (x) / ; this.subtract = function (x) /; this.showResult = function () / ; ;();var calc = new controls.Calculator(First);calc.add(7);calc.showResult();模块模式:示例var controls = (function () /hidden members function formatResult(name, value) / /visible member
5、s return Calculator: function (name) var result; result = 0; this.add = function (x) / ; this.subtract = function (x) /; this.showResult = function () / ; ;();var calc = new controls.Calculator(First);calc.add(7);calc.showResult();模块模式:概要 模块模式提供了变量和函数的封装 提供了加入可见性(公有/私有)到成员的方式 每个对象实例在内存中创建新的函数拷贝模块模式
6、演示揭示模块模式揭示最关注的成员揭示模块模式:优缺点 优点: 模块化代码到可重用对象中 变量/函数从全局命名空间取出 只暴露可见成员 清洁方式来暴露成员 易于改变成员私有性 缺点: 不易扩展 调试有问题 难以为测试来仿制隐藏对象揭示模块模式:结构 结构:var module = (function() /hidden variables /hidden functions return /visible memberssomeFunc: referenceToFunctionanotherFunc: referenceToOtherFunction;();揭示模块模式:示例var contro
7、ls = (function () /hidden function function formatResult(name, value) / var Calculator = (function () var Calculator = function (name) / ; Ctotype.add = function (x) / ; Ctotype.subtract = function (x) / ; Ctotype.showResult = function () / ; return Calculator;
8、 (); return Calculator: Calculator ;();var calc = new controls.Calculator(First);揭示模块模式:示例var controls = (function () /hidden function function formatResult(name, value) / var Calculator = (function () var Calculator = function (name) / ; Ctotype.add = function (x) / ; Ctot
9、ype.subtract = function (x) / ; Ctotype.showResult = function () / ; return Calculator; (); return Calculator: Calculator ;();var calc = new controls.Calculator(First);揭示模块模式:示例var controls = (function () /hidden function function formatResult(name, value) / var Calculator = (function (
10、) var Calculator = function (name) / ; Ctotype.add = function (x) / ; Ctotype.subtract = function (x) / ; Ctotype.showResult = function () / ; return Calculator; (); return Calculator: Calculator ;();var calc = new controls.Calculator(First);揭示模块模型:概述 模块模型提供变量和
11、函数的封装 提供了加入可见性(公有/私有)到成员的方式 扩展对象困难,因没有使用原型揭示模块模式 演示揭示原型模式揭示最关注的成员揭示原型模式:优缺点 优点: 模块化代码到可重用对象中 变量/函数从全局命名空间取出 只暴露可见成员 函数立即加载入内存 可扩展 缺点: this棘手 构造器从原型分离揭示原型模式:结构 结构:var Constructor = function () /constructor defined hereCtotype = (function() /hidden variables /hidden functions return /exp
12、osed memberssomeFunc: pointerToSomeFuncanotherFunc: pointerToAnotherFunc;();揭示模块模式:示例var Calculator = function (name) / ;Ctotype = (function () var add, subtract, showResult, formatResult; add = function (x) / ; subtract = function (x) / ; showResult = function () / ; formatResult = fun
13、ction (name, value) / ; return add: add, subtract: subtract, showResult: showResult ;();var calc = new Calculator(First);揭示原型模型:概述 模块模型提供变量和函数的封装 提供了加入可见性(公有/私有)到成员的方式 提供可扩展能力揭示原型模式 演示单例模式单一对象统治全部!Singleton单例模式:结构 结构:var module = function() var instance, getInstance; return getInstance: function() if(!instance) instance = new Instance(); return instance; ;();单例模式:示例var controls = function () var Calculator, calculatorInstance; Calculator = (function () function Calculator() / return Calculator; (); return get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中信银行南宁分行校园招聘备考题库附答案详解(黄金题型)
- 2025年云和县公开招聘专职社区工作者15人备考题库含答案详解(考试直接用)
- 2026徽商银行淮北分行综合支行主要负责人招聘备考题库及答案详解(夺冠系列)
- 2025丹阳农商银行常态化社会招聘21人备考题库及答案详解(各地真题)
- 2025广东韶关乐昌市沙坪镇招聘茶园村基层公共服务站系统操作员1人备考题库含答案详解(新)
- 资阳市雁江区2025年面向社会公开招聘社区专职工作人员的备考题库(50人)含答案详解(培优b卷)
- 2026秋季中国工商银行海南分行校园招聘170人备考题库含答案详解(巩固)
- 2026兴业银行乌鲁木齐分行校园招聘备考题库及答案详解(夺冠)
- 2025重庆高新区社区工作者招聘45人备考题库及参考答案详解一套
- 2025年杭州市规划和自然资源局上城分局公开招聘编外用工人员2人备考题库含答案详解(基础题)
- 2025英语高考上海市真题试卷 解析及答案
- 沪教版(新版)一年级下学期数学第4单元100以内的加减法单元试卷(附答案)
- 超声诊疗技术操作规范大全
- 第二单元 第4课《数据分包灵活传》课件 2025-2026学年人教版初中信息科技七年级全一册
- 抖音起号策划方案
- 风电场项目(土建、电气、机务)强制性条文汇编
- (2025年版)血友病治疗中国指南解读
- 【数】期中模拟检测卷(试题)-2025-2026学年八年级上册数学人教版
- DB42∕T 1752-2021 柳杉人工林可持续经营技术规程
- 寺院消防安全培训课件
- 船舶高技能人才评价-洞察与解读
评论
0/150
提交评论