博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类的进阶
阅读量:5317 次
发布时间:2019-06-14

本文共 1127 字,大约阅读时间需要 3 分钟。

apply的两个参数分别是上下文和参数组成的数组。

function.apply(this, [1, 2, 3]);

call的两个参数是多个,也就是不用数组包裹参数。

function.call(this, 1, 2, 3);

常常会遇到事件内部没有this的情况,怎么处理呢?

低级方法:

$('.clicky').click(function(){  $(this).hide();});$('p').each(function(){  $(this).remove();});var clicky = {   wasClicked: function(){/* ... */ },addListeners: function(){  var self = this;   $('.clicky').click(function(){  self.wasClicked() });} };clicky.addListeners();

高阶方法:

var proxy = function(func, thisObject){   return(function(){  return func.apply(thisObject, arguments); });};var clicky = { wasClicked: function(){/* ... */ },addListeners: function(){   var self = this;   $('.clicky').click(proxy(this.wasClicked, this));} };

jQuery中proxy()用来实现将上下文传给事件的回调函数的功能

$('.clicky').click($.proxy(function(){ /* ... */ }, this));

apply还可以用来作委托:

var App { log: function(){if (typeof console == "undefined") return;//arguments是当前调用的作用域内解释器内置的用来保存参数的“数组”。//因为他是不可变的,需要jquery.makArray()把它转换成真的数组。var args = jQuery.makeArray(arguments);// 插入一个新的参数 args.unshift("(App)");// 委托给console console.log.apply(console, args);} };

待续。。

转载于:https://www.cnblogs.com/haimingpro/p/3823038.html

你可能感兴趣的文章
Hover功能
查看>>
js千分位处理
查看>>
Mac---------三指拖移
查看>>
字符串类型的相互转换
查看>>
HTTP状态码
查看>>
iOS如何过滤掉文本中特殊字符
查看>>
基础学习:C#中float的取值范围和精度
查看>>
MongoDB-CRUD
查看>>
javaagent 简介
查看>>
python升级安装后的yum的修复
查看>>
Vim配置Node.js开发工具
查看>>
web前端面试题2017
查看>>
ELMAH——可插拔错误日志工具
查看>>
MySQL学习笔记(四)
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
两数和
查看>>
移动设备和SharePoint 2013 - 第3部分:推送通知
查看>>
SOPC Builder中SystemID
查看>>
MySQL数据库备份工具mysqldump的使用(转)
查看>>
NTP服务器配置
查看>>