为了账号安全,请及时绑定邮箱和手机立即绑定

求解释,对于javascript 中的call函数的理解问题

求解释,对于javascript 中的call函数的理解问题

aluckdog 2022-03-24 19:15:46
call([thisObj[,arg1[, arg2[, [,.argN]]]]])参数thisObj可选项。将被用作当前对象的对象。arg1, arg2, , argN可选项。将被传递方法参数序列。说明call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。完全搞不懂 这个函数的意思 和使用方法举个例子我使用这个运算<script language="javascript" type="text/javascript">function myFun(){document.write(arguments + " ");}var myObject = new Object();myFun.call(myObject,13,3,95);</script>答案结果是[object Object]我想问的是 myFun.call(myObject,13,3,95 )这几个参数 13,3,95是什么关系 它们之间 这个函数到底是怎么运行的看那些书上的解释 看不懂希望有高手 来帮忙解答
查看完整描述

2 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

call方法:
语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]])
定义:调用一个对象的一个方法,以另一个对象替换当前对象。
说明:
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

查看完整回答
反对 回复 2022-03-28
?
慕哥9229398

TA贡献1877条经验 获得超6个赞

标准解释:call方法是将一个对象的方法在另一个对象的上下文环境中执行。

详细解释:你的例子中,myFun.call(myObject, 13, 3, 95)执行时是这样的:
1. 调用myFun函数
2. 将13,3,95三个参数传递给它(你的myFun方法中没有处理这些参数的代码,所以传了也没有用)
3. 将myFun函数中的所有this用myObject代替(同样,你的myFun函数中没有使用this,所以执行结果和直接调用myFun()是一样的)

修改一下你的例子,帮助你理解:
function myFun(p1, p2, p3)
{
this.para1 = p1;
this.para2 = p2;
this.para3 = p3;
}

var myObject = new Object();

alert(myObject.para1) //显示undefined

myFun.call(myObject,13,3,95); /*执行的时候,myFun方法中的this全部用myObject对象代替,所以在这个例子中,执行myFun方法和直接写下面的语句效果是一样的:
myObject.para1 = 13;
myObject.para2 = 3;
myObject.para3 = 95;
*/

alert(myObject.para1) //显示13

 


查看完整回答
反对 回复 2022-03-28
  • 2 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信