<!-- $.proxy(fn,this,agrument);

proxy 代理 思考做酒的代理商
argument就是代理商 把fn所在的作用域对象的参数/属性 代理给fn执行。

 fn: 要被调用的已有的函数。

 this: fn函数所在的对象的名称。 就是 fn在哪里调用,this 就是指向那个作用域中的对象。
说白了就是:fn 函数在哪个作用被调用,this就是指向谁。 arg: 把fn函数所在的对象 this 的参数 传递给fn执行。
arg 一定是 fn函数所在的对象this 里面的任何参数皆可。
-->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="panel" style="display:none;">
<button class="close">消失</button>
</div>
<script src="js/jquery.js"></script>
<script>
/*$("#panel").fadeIn(3000,function () {
  $('.close').click(function () {
    $(this).fadeOut(); // 其实这里我想让 #panel 隐藏来着
console.log($(this));
  });
});
$('#panel').click(function() {
  setTimeout(function() {
    $(this).addClass('aNewClass'); // 这个 this 根本就不对嘛
console.log($(this));
  }, 1000);
});*/ $("#panel").fadeIn(function(){
console.log(this);//指向 $('$panel')对象
$('.close').click($.proxy(HidePanel, this));
// 相比这个 $('.close').click(function(){HidePanel()}); 优美很多
}); function HidePanel() {
//如果HidePanel这个函数单独调用,那么这里的this指向window
//$(this).fadeOut(); 而这句话就会报错,因为window是无法执行fadeOut动画的。
//这里不能单独执行,如果没有$(this).fadeOut();这句代码,那就可以执行。
//该函数在哪个作用域中执行,这个this就指向谁。
console.log(this);
$(this).fadeOut();
} $('#panel').click(function() {
  setTimeout(
$.proxy(
function(e) {
     $(this).addClass('aNewClass');
for (var p in e) {
console.log(e);
}
   },
this,
'woaini'),
1000);
}); //单独执行函数HidePanel 会报错,函数中的this指向window,而window是无法执行fadeOut动画的
// HidePanel();
</script>
</body>
</html>
====================
$(selector).proxy(context,name)
function 要被调用的已有的函数。
name 已有的函数,其上下文将被改变(应该是 context 对象的属性)。
就是:不再执行整个function函数了,而是直接执行context。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
var objPerson = {
name: "John Doe",
age: 32,
test: function(){
$("p").after("Name: " + this.name + "<br> Age: " + this.age);
}
};
$("button").click($.proxy(objPerson,"test"));
});
</script>
</head>
<body> <button>执行 test 函数</button>
<p></p> </body>
</html>
============
语法:$(selector).proxy(function,context)
function 要被调用的已有的函数。
context 函数所在的对象的名称。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js">
</script>
<script>
$(document).ready(function(){
test=function()
{
this.txt="这是一个对象属性";
$("div").click($.proxy(this.myClick,this));
}; test.prototype.myClick = function(event)
{
alert(this.txt);
alert(event.currentTarget.nodeName);
}; var x = new test();
});
</script>
</head>
<body> <div>这是一个 div 元素。</div> </body>
</html>

关于 $.proxy(fn,context,arg) 方法的更多相关文章

  1. c# AOP编程:Context与方法拦截

    之前做AgentBooking时候,遇到两个问题比较棘手,一个是异常的传递与捕获:如何可以合理地在层层代码调用中统一传递并统一捕获异常.因为如果有一个做法,可以地方统一处理异常,可以使代码减少很多tr ...

  2. jQuery.proxy(function,context)

    jQuery.proxy(function,context) 概述 jQuery 1.4 新增.返回一个新函数,并且这个函数始终保持了特定的作用域.大理石平台检定规程 当有事件处理函数要附加到元素上, ...

  3. 实战CGLib系列之proxy篇(一):方法拦截MethodInterceptor

    实战CGLib系列文章 本篇介绍通过MethodInterceptor和Enhancer实现一个动态代理. 一.首先说一下JDK中的动态代理: JDK中的动态代理是通过反射类Proxy以及Invoca ...

  4. Android 缓存目录 Context.getExternalFilesDir()和Context.getExternalCacheDir()方法

    一.基础知识 应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的.大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中.这样当该应用被卸载 ...

  5. Android获取全局Context的方法

    Android获取全局Context的方法 Android--应用全局获取Context - 超宇的博客 - CSDN博客https://blog.csdn.net/chaoyu168/article ...

  6. 【转】Context.getExternalFilesDir()和Context.getExternalCacheDir()方法

    应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的.大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中.这样当该应用被卸载后,这些数据还 ...

  7. QT学习之QString的arg方法

    在QT的QString中,arg方法类似于C中的printf中使用的格式输出符(只是有点类似). 在QT5的帮助文档中,可以看出以下几点: 使用arg(str1, str2, str3)这种方法进行替 ...

  8. QT之QString的arg方法

    转载.标记一下,总结的很好 转自 http://www.cnblogs.com/lomper/p/4135387.html 在QT的QString中,arg方法类似于C中的printf中使用的格式输出 ...

  9. Qt QString的arg()方法的使用

    1.QString的arg()方法用于填充字符串中的%1,%2...为给定的参数,如 QString m = tr("); // m = "12:60:60: 2.它还有另外一种重 ...

随机推荐

  1. Linux大道——博客目录

      Linux基础 第一章 计算机基础 计算机基础 网络基础 第二章 Linux基础

  2. 利用Python进行数据分析 第6章 数据加载、存储与文件格式(2)

    6.2 二进制数据格式 实现数据的高效二进制格式存储最简单的办法之一,是使用Python内置的pickle序列化. pandas对象都有一个用于将数据以pickle格式保存到磁盘上的to_pickle ...

  3. C#进阶系列——WebApi接口返回值类型详解

    阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T content) 2.Ok(). Ok(T content) 3.NotFound() 4.其他 5.自定义I ...

  4. 使用MD5加密字符串

    一.概念: MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值. 二 ...

  5. Java集合源码阅读之HashMap

    基于jdk1.8的HashMap源码分析. 引用于:http://blog.stormma.me/2017/05/31/Java%E9%9B%86%E5%90%88%E6%BA%90%E7%A0%81 ...

  6. 十年感悟之 python之路

    本文由 简悦 SimpRead 转码, 原文地址 https://laisky.com/p/python-road/ Changelog: updated at 2019/9/6 一.概述 本文起源于 ...

  7. ubuntu安装之后需要做什么

    安装完ubuntu或者linux后应该做什么?首先在你安装完之后,都知道,很多系统都是有自带的一些软件之类,很多其实是不必要的,我们可以完全删掉,需要的时候再重装,那么安装完之后应该做什么呢? 1.智 ...

  8. Java 之 字节输入流 [InputStream]

    一.字节输入流 java.io.InputStream 抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中. 它定义了字节输入流的基本共性功能方法. 共性方法: public void c ...

  9. java基础点

    1.eclipse什么时候编译java类文件 2.在同一包中的类可以相互引用,无需用import语句 3.在Java eclipse用ALT输入特殊符号 4.if else等语句,什么时候可以不加括号 ...

  10. c# 串行化事件