前几天看到一个面试题,题目是这样的:
请你说说对javascript中apply,call,bind的理解?
首先apply和call是老生常谈的东西,但是对于bind,我愣了下,因为这个词是jquery中使用频率很高的一个方法,用来给DOM元素绑定事件用的。
为了搞清这个陌生又熟悉的bind,google一下,发现javascript1.8.5版本中原生实现了此方法,目前IE9+,ff4+,chrome7+支持此方法,opera和safari不支持(MDN上的说明)。
bind的作用和apply,call类似都是改变函数的execute context,也就是runtime时this关键字的指向。但是使用方法略有不同。一个函数进行bind后可稍后执行。
例子如下:
[url=https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind]https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind [/url]
- MSDN: [url=http://msdn.microsoft.com/en-us/library/ff841995%28v=vs.94%29.aspx]http://msdn.microsoft.com/en-us/library/ff841995%28v=vs.94%29.aspx [/url]