Javascript
.call()和
.apply()方法允许您设置函数的 上下文 。
var myfunc = function(){ alert(this.name);};var obj_a = { name: "FOO"};var obj_b = { name: "BAR!!"};
现在您可以致电:
myfunc.call(obj_a);
哪个会警惕
FOO。相反,通过
obj_b将使人警觉
BAR!!。
.call()和之间的区别
.apply()是,
.call()如果要将参数传递给函数并
.apply()需要一个数组,则需要用逗号分隔的列表。
myfunc.call(obj_a, 1, 2, 3);myfunc.apply(obj_a, [1, 2, 3]);
因此,您可以
hook使用该
apply()方法轻松编写函数。例如,我们要向jQuerys
.css()方法添加功能。我们可以存储原始函数引用,使用自定义代码覆盖函数并调用存储的函数。
var _css = $.fn.css;$.fn.css = function(){ alert('hooked!'); _css.apply(this, arguments);};
由于magic
arguments对象是类似于对象的数组,因此我们可以将其传递给
apply()。这样,我们保证所有参数都传递给原始函数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)