js 闭包

最近这几天重新复习了 js的面向对象-闭包。通过课上老师的讲解和例题,令我对闭包有了更多的认识和更深的理解。

''闭包'',可简单的理解成“定义在一个函数内部的函数“。在本质上也可以说闭包就是将函数内部和函数外部连接起来的桥梁。

按我自己的理解的话,闭包就是函数里面套着另一个函数就形成了闭包。

     举例:

		<script>
			function a(){
				console.log("1")
				function b(){
					console.log("2")
				}
			}
		</script>

自执行的匿名函数

问题: 什么是匿名函数?

解答:就是把名字用~!()等特别符号命名,并放在function最前面.执行时直接用()不用名称。

请看例子

下面这个例子是我完成的一个面向过程的拖拽效果

注意:当你函数套函数的时候,函数中的this肯定会改变。这是我完成拖拽效果中所忽略的问题.后来经过老师的讲解可以通过缓存你需要的this      var  _this=$("this")  

——图中;function($){

})()

就是自执行的匿名函数的写法

举例:

;(function($) {

	$.fn.center = function(options) {
	var defaults = {

		}

		var options = $.extend(defaults, options);
		this.each(function(){
			//功能实现逻辑
			
			$(".box").mousedown(function(e){
				var el=$(this)
				var isMove=true;
				var div_x=e.pageX-$(".box").offset().left;
				var div_y=e.pageY-$(".box").offset().top;
				
				$(document).mousemove(function(e){
					if (isMove) {
						//console.log(_this)
						el.offset({
							"left":e.pageX-div_x,
							"top":e.pageY-div_y
						})
					}
					//console.log(e.pageX)
				}).mouseup(function(){
					isMove=false
				})
			})
		})

	}

})(jQuery)

匿名函数的作用

匿名函数的作用是避免全局变量的污染以及函数名的冲突。

个人理解:当团队需要共同完成某个项目的时候,可以通过匿名函数来避免重复命名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值