call()\apply()\bind()备忘录
这几个玩意儿几乎看一次忘一次,每次用都要重新看一遍,还是理解的不够。本文对不做深入解释,只根据自己的理解对函数定义进行语义化说明。
1.call()
fun.call(context,arg1,arg2),其中arg1,arg2等可无
example:
<input type="text" id="el" value="input text">
function func(){
alert(this.value);
}
var value = "global";
var ele = document.getElementById("el");
func(); // global
func.call(ele); //input text,这里将func上下文从this(window)替换为ele
2.apply()
func.apply(context,[arg1,arg2]),其中[]内容可无,作用与call()一致,传参方式不一致而已。
example:
func.call(ele,arg1,grg2);
func.apply(ele,[arg1,arg2]);
3.bind()这是ECMAScript 5中的一个方法:bind()。这个方法会创建一个函数的实例,其this 值会被绑定到传给bind()函数的值。即bind()的实现思路如下:
Function.prototype.bind = function(obj) {
var self= this,
return function() {
return self.apply(obj, arguments);
};
}
实际的具体实现过程中,应考虑arguments中除去obj,以及没有arguments的情况等。在《javascript权威指南》中对于bind有详尽的代码可以参阅。
example:
window.color = "red";
var o = { color: "blue" };
function sayColor(){
alert(this.color);
}
var objectSayColor = sayColor.bind(o);
objectSayColor(); //blue
支持bind()方法的浏览器有:IE9+、Firefox 4+、Safari 5.1+、Opera 12+和Chrome。
题外话:《javascript高级程序设计》这本书的确比较适合初学者,但是的确有些东西讲的不清楚,比如闭包,比如立即执行,比如变量的提升,所以与《javascript权威指南》搭配着看再好不过。
call()\apply()\bind()备忘录的更多相关文章
- call,apply,bind的用法
关于call,apply,bind这三个函数的用法,是学习javascript这门语言无法越过的知识点.下边我就来好好总结一下它们三者各自的用法,及常见的应用场景. 首先看call这个函数,可以理解成 ...
- JavaScript中call,apply,bind方法的总结。
why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = { user:"追梦子", fn:f ...
- call(),apply(),bind()与回调
1.call(),apply(),bind()方法 JavaScript 中通过call或者apply用来代替另一个对象调用一个方法,将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定 ...
- JS 的 call apply bind 方法
js的call apply bind 方法都很常见,目的都是为了改变某个方法的执行环境(context) call call([thisObj[,arg1[, arg2[, [,.argN]]]] ...
- javascript-this,call,apply,bind简述2
上节我们一起研究了this这个小兄弟,得出一个结论,this指向调用this所在函数(或作用域)的那个对象或作用域.不太理解的朋友可以看看上节的内容,这次我们主要探讨一下call(),apply(), ...
- javascript-this,call,apply,bind简述1
最近在系统的学习面向对象方面的知识,遇到的最大拦路虎就数this的指向,call,apply,bind函数的使用,单独抽出一天时间把这几个烦人的家伙搞定,去学习更深入的内容. 首先介绍一下this的一 ...
- call,apply,bind方法的总结
why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之前,通常会有这些问题. var a = { user:"追梦子", fn:f ...
- JavaScript中call,apply,bind方法的总结
原文链接:http://www.cnblogs.com/pssp/p/5215621.html why?call,apply,bind干什么的?为什么要学这个? 一般用来指定this的环境,在没有学之 ...
- call, apply,bind 方法解析
call(), apply(),bind() 三者皆为Function的方法 call(),apply()的作用是调用方法,并改变函数运行时的context(作用上下文) bind() 的作用是引用方 ...
随机推荐
- 收集的github的东西
1.voghDev/PdfViewPager-Android widget that can render PDF documents stored on SD card, linked as ass ...
- 1021上课演练----SQL注入与避免(银行系统)
package com.bank; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.Dat ...
- Qweb Pdf 中添加 图片
具体方法如下: <img t-if="company.logo" t-att-src="'data:image/png;base64,%s' % company.l ...
- Jquery广告浮动效果小案例
导入<script src="<%=path%>/html5/js/jquery.js"></script>文件 <SCRIPT type ...
- html5 语义
页面示意图
- 示例在同一台机器上使用RMAN克隆数据库
1.查看主库ZDJS并使用RMAM进行备份 [oracle@std ~]$ sqlplus '/as sysdba' SQL*Plus: Release - Production on Wed Jan ...
- 2016HUAS暑假集训题1 A-士兵队列训练问题
A - 士兵队列训练问题 Description 某部队进行新兵队列训练,将新兵从一开始按顺序依次编号,并排成一行横队,训练的规则如下:从头开始一至二报数,凡报到二的出列,剩下的向小序号方向靠拢,再从 ...
- Linux下一些有用的指令
1. 安装源代码包用到的configure 这用来定位安装位置. 用法: ./configure -prefix=<安装目录>, 前提是文件中有configure执行文件.
- Network | UDP checksum
1. 校验和 ICMP,IP,UDP,TCP报头部分都有checksum(检验和)字段.IP 首部里的校验和只校验首部:ICMP.IGMP.TCP和UDP首部中的校验和校验首部和数据. UDP和TCP ...
- xml案例(考生成绩管理系统)
package itacst.dao; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node ...