闭包实现封装

1 闭包实现封装

var oj= (function(){
    var _age= 0;
    var func1= function(){
      return _age+1;
    };
    var func2= function(){
      return _age+2;
    };
    return {
      m1 : func1,
      m2 : func2
    };
})(); 

2 为上面的方法添加新方法

var obj =(function (f){
    f.func3= function () {
      return ‘方法模式‘;
    };
    return f;//方便方法连续调用
})(oj);//新模块obj继承oj的方法,并增加一个
alert(obj.m1());
alert(obj.m2());
alert(obj.func3());

3 上边的可能在oj没有加载,就执行obj模块,所以可以这样

var obj =(function (f){
    f.func3= function () {
      return ‘方法模式‘;
    };
    return f;//方便方法连续调用
})(window.oj|| {});

4 输入全局变量:独立性是模块的重要特点,模块内部最好不与程序的其他部分直接交互。为了在模块内部调用全局变量,必须显式地将其他变量输入模块。

这是jQuery框架的源码,将window对象作为参数传入,这样做除了保证模块的独立性,还使得模块之间的依赖关系变得明显。

(function(window, undefined ) {
  ……
})(window ); 
时间: 2024-12-28 20:51:35

闭包实现封装的相关文章

使用Swift的代理,闭包来封装一个公用协议减少垃圾代码

iOS开发中,如果不进行适当的封装,使用协议或者继承类来进行开发,你就会遇到传说中的ViewController(以后简称VC) Hell的问题…… 比如说,我们先声网App中为了调用接口,做简单的判断,会有如下的垃圾代码(前辈遗留下来的): override func viewDidLoad() { super.viewDidLoad() var color = UIColor(red: 153/255, green: 204/255, blue: 204/255, alpha: 1) sel

一切皆对象之两个方法概括js,无函数签名(无多态),原型,闭包,封装,引用类型,继承……

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script type="text/javascript"> var num = [88, 1151, 1]; (function() { /** * 对于n1,n2,n3:如果其中任意两个

分享几个Javascript 封装方法

基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写"; this.hobbys = []; } Person.prototype = { sayName:function(){ console.log(this.name); }, sayAge:function(){ console.log(this.age); }, addHobby:function(ho

基本封装方法

请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写"; this.hobbys = []; } Person.prototype = { sayName:function(){ console.log(this.name); }, sayAge:function(){ console.log(this.age); }, addHobby:function(hobbys){

JavaScript设计模式-6.封装

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title>javascript高级语法6-封装</title> 6 </head> 7 <body> 8 <script> 9 /* 10 * 信息的隐藏是最终的目的,封装只不过是隐藏的一种方法 11 */ 12 13 function demo1()

JavaScript(4)——闭包与this对象以及window对象

闭包与this对象以及window对象 这次写的是这三个内容.其实在写之前,会觉得这三个内容很多,但是写了之后会发现,内容确实很多,但是可以写出来的也并不是很多.可能是我总结能力太差.但是这些内容我觉得看实例会比看文字会比较好.恩,第四篇,继续吧. [闭包] 闭包是指有权访问另一个函数作用域中变量的函数.创建闭包的常见方式,就是在一个函数内部创建另一个函数.(闭包就是能够读取其它函数内部变量的函数) 闭包可以读取函数内部的变量,也可以让这些变量的值始终保持在内存中. 闭包会携带包含它的函数的作用

Javascript 封装方法

基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写"; this.hobbys = []; } Person.prototype = { sayName:function(){ console.log(this.name); }, sayAge:function(){ console.log(this.age); }, addHobby:function(ho

JavaScript使用封装

基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写"; this.hobbys = []; } Person.prototype = { sayName:function(){ console.log(this.name); }, sayAge:function(){ console.log(this.age); }, addHobby:function(ho

JavaScript利用闭包循环绑定事件

我们经常在做前端面试题的时候,会遇到循环绑定事件后,输出打印结果,很多人总是搞不清楚,今天借此机会跟大家梳理一下闭包相关作用. 1.首先我们举一个简单的例子. html部分: <a href="#">首页</a> <a href="#">作品</a> <a href="#">文章</a> <a href="#">工具</a> <