求教一个call和apply的用法 Function.prototype.apply.call(console.log, console, Array.prototype.slice.call(arguments));请问这样调用console.log和console的原因是什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 感觉没必要要这样写,console.log直接可以要用数组输出了 Function.prototype.apply.call(console.log, console, Array.prototype.slice.call(arguments));拆开解释:Array.prototype.slice.call(arguments) 这段代码是调用数组的slice方法,把参数转换成一个数组 arguments是函数内部的参数集合 由此可见这段代码也是放在一个函数内部的。call是调用方法 参数1 : console.log 更改Function的上下文环境,也就是this 参数2 , 参数3 : 函数中的参数,call与apply的区别就在与传入参数集合的方式不同,call是按照顺序码放,apply是作为一个集合放进去Function.prototype.apply是把apply方法放在 函数的原型列表里,这样使用的时候就需要先创建函数对象var a = function(){} 这个样子。Function.prototype.apply.call 这个就是apply是定义在Function原型中的方法,调用这个方法的时候,apply函数的上下文会指向concole.log 而且默认apply 函数的主体能够获取console 与 参数集合 的参数大致就是上面这一堆东西 这个算是js的进阶用法,一般不是设计上必要,不要这么写。 探讨一下JS对象实现继承的办法 额的神啊?从书上抄的名家代码都有错啊。。。。。 CGI程序中间要求弹出的网页为什么要到整个程序执行完之后再弹出? Javascript程序的内存划分是怎么样的? 预加载的问题 很有趣的JS的问题 如何用javascript给text赋值 怎么通过输入一个密码关闭网页 如何改变select下拉框的图标?我想用cursor:hand,但是发现不管用? 麻烦高手帮我实现我个功能 网页加载很大的图片,可以用JS控制加载速率么? 正则表达式加了^ 与不加这个符号的区别
参数2 , 参数3 : 函数中的参数,call与apply的区别就在与传入参数集合的方式不同,call是按照顺序码放,apply是作为一个集合放进去Function.prototype.apply是把apply方法放在 函数的原型列表里,这样使用的时候就需要先创建函数对象
var a = function(){} 这个样子。Function.prototype.apply.call 这个就是apply是定义在Function原型中的方法,调用这个方法的时候,apply函数的上下文会指向concole.log 而且默认apply 函数的主体能够获取console 与 参数集合 的参数
大致就是上面这一堆东西 这个算是js的进阶用法,一般不是设计上必要,不要这么写。