您的位置:首页> 前端教程> JS教程
文章导航

JavaScript call()

2018-11-12 10:59| 作者: admin| 查看: 1431| 评论: 0|来自: 蚂蚁部落

call方法可以改变其他方法(函数)的调用对象,方法内的this也会指向新的调用对象。

此方法与apply方法功能类似,具体参阅JavaScript apply()一章节。

特别说明:apply对箭头函数无效。

语法结构:

[JavaScript] 纯文本查看 复制代码
fn.call(thisobj,arg1,arg2,...)

参数解析:

(1).fn:要被改变调用对象的方法或者函数。

(2).thisobj:必需,fn的新调用对象,fn中的this将会指向此对象。

(3).arg:可选,传递给fn的参数。

浏览器支持:

(1).IE浏览器支持此方法。

(2).edge浏览器支持此方法。

(3).谷歌浏览器支持此方法。

(4).opera浏览器支持此方法。

(5).火狐浏览器支持此方法。

(6).safria浏览器支持此方法。

代码实例:

[JavaScript] 纯文本查看 复制代码运行代码
var obj={
  webName:"蚂蚁部落"
}
var webName="baidu";
function fn(){
  console.log(this.webName);
}
fn();
fn.call(obj)

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/12/110052mmqzstz2wwcf3hn3.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

代码分析如下:

(1).默认状态下,调用fn函数,函数中的this指向window对象,所以打印结果为"baidu"。

(2).通过call方法将fn的调用对象修改obj,那么fn中的this也就指向obj,于是打印结果为"蚂蚁部落"。

[JavaScript] 纯文本查看 复制代码运行代码
var obj = {
  webName:"蚂蚁部落"
}
function fn(x,y){
  console.log(this.webName);
  console.log(x + y)
}
fn.call(obj, 2, 3);

代码运行效果截图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201811/12/110122jllc5lqnlb4c3g53.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

代码分析如下:

(1).通过call方法将fn函数的调用对象修改obj,那么fn中this指向obj。

(2).call方法从第二个参数开始的所有参数都是为fn传递的参数,也就是将参数2和3传递给fn。

1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

最新评论

返回顶部