jQuery的$.proxy()应用示例介绍


Posted in Javascript onApril 03, 2014

今天在看<<锋利的jQuery>>时看到了proxy()的使用,感觉很模糊,就到处找资料.

jQuery的$.proxy()应用示例介绍 

jQuery的源码也没看明白.

不过总算明白了proxy的用法了;

<input type="button" value="测试" id="guoBtn" name="我是按钮的name"/>

var obj = { 
name: "我是obj的name", 
sayName: function () { 
alert(this.name); 
} 
} 
$("#guoBtn").click(obj.sayName); //我是按钮的name 
// 如果我想访问obj的name怎么办呢? 
$("#guoBtn").click($.proxy(obj.sayName,obj));//"我是obj的name" 
$("#guoBtn").click($.proxy(obj, "sayName")); //"我是obj的name"

从上面proxy(a,b)的用法可以看出他的参数有两种写法.

第一种:a是一个function函数,b是这个函数的对象所有者.

第二种:a是一个对象,b是一个字符串,是a的属性名.

还有这个实例就是<<锋利的jQuery>>上的一个例子了.

<div id="panel" style="display:none;"> 
<button>Close</button> 
</div>

$("#panel").fadeIn(function () { 
$("#panel button").click(function () { 
$(this).fadeOut(); 
}); 
});

button虽然消失了,但是panel却没有消失.可以使用proxy来解决这个问题.

$("#panel").fadeIn(function () { 
var obj = this; 
$("#panel button").click($.proxy(function () { 
$(this).fadeOut(); 
}, obj)); 
});

这样单击按钮之后,panel才会消失.

个人感觉proxy最主要就是用来修改函数执行时的上下文对象的.

是在apply的基础上做的封装,所以说proxy就是我们jQuery自己的apply.

Javascript 相关文章推荐
JavaScript的document对象和window对象详解
Dec 30 Javascript
jquery加载页面的方法(页面加载完成就执行)
Jun 21 Javascript
artDialog 4.1.5 Dreamweaver代码提示/补全插件 附下载
Jul 31 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
Nov 01 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
Nov 14 Javascript
javascript获得当前的信息的一些常用命令
Feb 25 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
element-ui 限制日期选择的方法(datepicker)
May 16 Javascript
vue-router传参用法详解
Jan 19 Javascript
js中arguments对象的深入理解
May 14 Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 Javascript
解决Antd Table组件表头不对齐的问题
Oct 27 Javascript
js实现的复制兼容chrome和IE
Apr 03 #Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 #Javascript
javascript实现页面内关键词高亮显示代码
Apr 03 #Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
Apr 03 #Javascript
使用jQuery动态加载js脚本文件的方法
Apr 03 #Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
Apr 03 #Javascript
JavaScript异步编程Promise模式的6个特性
Apr 03 #Javascript
You might like
example1.php
2006/10/09 PHP
php Undefined index和Undefined variable的解决方法
2008/03/27 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
四个PHP非常实用的功能
2015/09/29 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
PHP 7.4中使用预加载的方法详解
2019/07/08 PHP
JavaScript编程中容易出BUG的几点小知识
2015/01/31 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
javascript常用的方法分享
2015/07/01 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
js改变css样式的三种方法推荐
2016/06/28 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
vue axios基于常见业务场景的二次封装的实现
2018/09/21 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
React如何实现浏览器打印部分内容详析
2019/05/19 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
Python下载网络小说实例代码
2018/02/03 Python
django数据库migrate失败的解决方法解析
2018/02/08 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
使用Python批量修改文件名的代码实例
2019/01/24 Python
Html5导航栏吸顶方案原理与对比实现
2020/06/10 HTML / CSS
医院护士专业个人的求职信
2013/12/09 职场文书
实习生求职自荐信
2014/02/07 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL
使用JS实现简易计算器
2021/06/14 Javascript
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL