Function.prototype.apply()与Function.prototype.call()小结_基础知识
程序员文章站
2022-04-16 17:35:28
...
老是忘掉这两个东东的用下,写下来做个记录吧。
他们作用是一模一样的,只是传入的参数不一样
他们作用是一模一样的,只是传入的参数不一样
apply
apply接受两个参数,第一个制定了函数体内this对象的指向,第二个参数为一个带下标的集合(可遍历对象),apply方法把这个集合中的元素作为参数传递给被调用的函数:
var func = function(a, c, c){ alert([a,b,c]); //[1,2,3] } func.apply(null, [1,2,3]);
call
call传入的参数不固定,和apply相同的是,第一个参数也是代表函数体内的this指向,第二个参数开始往后,每个参数被依次传入函数:
var func = function(a, b, c){ alert([a,b,c]); //[1,2,3] } func.call(null, 1,2,3);
call是aplly的一颗语法糖。如果第一个参数为null,函数体内的this指向宿主对象,在浏览器中是window。
call和apply的用途
1.改变this指向
上面的例子就是啦
2.Function.prototype.bind
模拟Function.prototype.bind
Function.prototype.bind = function(context){ var self = this; return function(){ return self.apply(context, arguments); } }; var obj = { name: 'cxs' }; var func = function(){ alert(this.name); //cxs }.bind(obj); fun();
推荐阅读
-
Function.prototype.apply()与Function.prototype.call()小结
-
mysql数据库基础知识点与操作小结
-
Function.prototype.apply()与Function.prototype.call()小结
-
JavaScript中关于indexOf的使用方法与问题小结_基础知识
-
mysql数据库基础知识点与操作小结
-
Function.prototype.apply()与Function.prototype.call()小结_基础知识
-
javascript实现方法调用与方法触发小结_基础知识
-
JavaScript常用字符串与数组扩展函数小结_基础知识
-
AJAX基础知识小结:什么是AJAX?传统Web应用模式与AJAX应用模式的比较
-
JavaScript中循环遍历Array与Map的方法小结_基础知识