bind() 理解 【转】
bind()可稍后执行 call() apply()
为了搞清这个陌生又熟悉的bind,google一下,发现javascript1.8.5版本中原生实现了此方法,目前IE9+,ff4+,chrome7+支持此方法,opera和safari不支持(MDN上的说明)。 
bind的作用和apply,call类似都是改变函数的execute context,也就是 runtime 时 this 关键字的指向。但是使用方法略有不同。一个函数进行bind后可稍后执行。
bind 方法实现:绑定this 和 “科里化”:
function getConfig(colors,size,otherOptions){
console.log(colors,size,otherOptions)
}
var defaultConfig = getConfig.bind(null,"#f00","1024*768");
defaultConfig("123"); //#f00 1024*768 123
defaultConfig("345"); //#f00 1024*768 345
因为bind 方法是EMS5 以后提出的方法,对于老的浏览器,可以使用手写一个bind 方法
if(!Function.prototype.bind){
Function.prototype.bind = function(oThis){
if(typeOf this !== 'function'){
throw new TypeError('What is trying to be bound is not callable')
}
var aArgs = Array.prototype.slice.call(arguments,1),
fToBind = this,
fNOP = function(){};
fBound = function(){
return fToBind.apply(this instanceof fNOP?this:oThis,
aArgs.concat(Array.prototype.slice.call(arguments)))
}
fNOP.prototype = this.prototype;
fBound.prototype = new fNOP();
return fBound;
}
}
bind() 理解 【转】的更多相关文章
- js 对call apply bind理解
		请参考 http://www.cnblogs.com/xljzlw/p/3775162.html 1.call和apply的区别:参数类型不同var mtt = { name: "mtt&q ... 
- call、apply以及bind
		call与apply都可以改变js的this指向,两者最主要的区别就是使用时传参的不同,apply的参数可以以数组的形式传进来,但是call方法的参数必须要一个一个的传进来,就像这样. func.ca ... 
- call,apply,bind 方法的学习
		这是三个常用的操作函数的方法,在js中函数就是一等公民,所以说掌握这三个方法还是有必要的 call 和 apply,都会绑定函数的上下文(context)并立即执行调用该方法函数,两者区别在于,接受的 ... 
- javascript中apply、call和bind的区别,容量理解,值得转!
		a) javascript中apply.call和bind的区别:http://www.cnblogs.com/cosiray/p/4512969.html b) 深入浅出 妙用Javascrip ... 
- 理解 backbone.js 中的 bind 和 bindAll 方法,关于如何在方法中指定其中的 this,包含apply方法的说明[转载]
		转载自:http://gxxsite.com/content/view/id/132.html 在backbone.js的学习过程中,被bind和bindAll弄得有点晕,这里包括underscore ... 
- javascript中call()、apply()、bind()的用法终于理解
		其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例1 obj.objAge; //17 obj.myFun() //小张年龄undefined 例2 shows( ... 
- 理解JS中的call、apply、bind方法(*****************************************************************)
		在JavaScript中,call.apply和bind是Function对象自带的三个方法,这三个方法的主要作用是改变函数中的this指向. call.apply.bind方法的共同点和区别:app ... 
- 深入理解 call,apply 和 bind
		在JavaScript 中,call.apply 和 bind 是 Function 对象自带的三个方法,这三个方法的主要作用是改变函数中的 this 指向,从而可以达到`接花移木`的效果.本文将对这 ... 
- 深入理解this,bind、call
		直接看this 直接看call和bind 首先放一道题: var a={ a:'haha', getA: function(){ console.log(this.a); } } var b= { a ... 
随机推荐
- Spring Boot2.X整合消息中间件RabbitMQ原理简浅探析
			目录 1.简单概述RabbitMQ重要作用 2.简单概述RabbitMQ重要概念 3.Spring Boot整合RabbitMQ 前言 RabbitMQ是一个消息队列,主要是用来实现应用程序的异步和解 ... 
- .net core 3.0 搭建 IdentityServer4 验证服务器
			叙述 最近在搞 IdentityServer4 API接口认证部分,由于之前没有接触过 IdentityServer4 于是在网上一顿搜搜搜,由于自己技术水平也有限,看了好几篇文章才搞懂,想通过博客 ... 
- 应届生/社招面试最爱问的几道Java基础问题
			本文已经收录自笔者开源的 JavaGuide: https://github.com/Snailclimb ([Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识)如果觉得不错 ... 
- FullPage.js-基于 jQuery 的插件全屏滚动插件
			fullPage.js 是一个基于 jQuery 的插件,它能够很方便.很轻松的制作出全屏网站.如今我们经常能见到全屏网站,尤其是国外网站.这些网站用几幅很大的图片或色块做背景,再添加一些简单的内容, ... 
- dataset中shuffle()、repeat()、batch()用法
			import numpy as npimport tensorflow as tfnp.random.seed(0)x = np.random.sample((11,2))# make a datas ... 
- 匈牙利算法(Kuhn-Munkres)算法
			这个算法有点难度,一般比较标准的描述网页上也有相关的描述,我在这里就简单的用十分通俗的语言给大家入个门 主要可以结合https://blog.csdn.net/zsfcg/article/detail ... 
- 【智能合约】编写复杂业务场景下的智能合约——可升级的智能合约设计模式(附Demo)
			智能合约的现状 以太坊在区块链上实现了智能合约的概念,用于:同质化通证发行(ERC-20).众筹.投票.存证取证等等,共同点是:合约逻辑简单,只是业务流程中的关键节点,而非整个业务流程.而智能合约想解 ... 
- java 类初识
			一.定义 成员变量 成员方法 注意: 1.成员变量有默认值,是全局变量 2.成员方法,不需要使用static 3.成员变量的默认值 整型 0 浮点型 0.0 引用数据类型 null 二.使用 1.导包 ... 
- 第二阶段冲刺个人任务——two
			今日任务: 优化作业查询结果,按学号排列. 昨日成果: 修改注册界面. 
- 团队项目——Alpha发布2
			一.作业描述 这个作业属于哪个课程 这个作业要求在哪里 团队名称 CTRL-IKun 这个作业的目标 在这个星期内完成团队项目α版本的第二次测试和发布,完善出错设置 二.成员列表 姓名 学号列表 廖志 ... 
