Function.prototype.apply()与Function.prototype.call()小结
作者:bea
老是忘掉这两个东东的用下,写下来做个记录吧。 他们作用是一模一样的,只是传入的参数不一样 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
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();
有用 | 无用
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();
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- js实现人民币大写金额形式转换
- javascript实现不同颜色Tab标签切换效果
- JS代码随机生成姓名、手机号、身份证号、银行卡号
- JavaScript弹窗基础篇
- jQuery绑定事件on()与弹窗的简要概述
- jQuery.form插件的使用及跨域异步上传文件
- js实现纯前端的图片预览
- 简介BootStrap model弹出框的使用
- js调用webservice构造SOAP进行身份验证
- javascript实现延时显示提示框特效代码
- JS延时器提示框的应用实例代码解析
- 基于JS实现Android,iOS一个手势动画效果
- requireJS使用指南
- vue,angular,avalon这三种MVVM框架优缺点
- 浏览器兼容的JS写法总结
- Vue.js基础知识汇总
- JS onkeypress兼容性写法详解
- 使用vue.js开发时一些注意事项
- 原生js实现addClass,removeClass,hasClass方法