call和apply的使用

<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>call和apply的使用</title>
    </head>

    <body>
        <p>关于 JavaScript 中 apply 和 call 方法的区别</p>
        <p>
            如果没接触过动态语言,以编译型语言的思维方式去理解 JavaScript 将会有种非常神奇而怪异的感觉,因为意识 上往往不可能的事,
       偏偏就在 js 中发生了,甚至会觉得 无法理喻,如果在 JavaScript 这自由而变幻无穷的语言 中遇到这种感觉,那么就从现在开始,
       放下你的"偏见",因为 这对你来说绝对是一片新大陆 理解 JavaScript 动态变换运行时上下文特性,这种特性 主要体现在 apply 和
       call 这两个方法的应用上 区别 apply 跟 call 就一句话 fun.call(this,arg1,arg2,arg3) == fun.apply(this,arguments) == fun.apply(this,[arg1,arg2,arg3])
</p> <p> call,apply都是属于Function.prototype的一个 方法,是 JavaScript 引擎内在实现的,因为属于 Function.prototype,
       所以每个 Function 都可以使用 call,apply属性,既然它们作为方法 的属性,那么它们的使用当然就是针对方法的了, 这两个方法是
       非常容易混淆的,因为他们的作用都是 一样的,只是使用方式不同 相同点: 两个方法产生的作用是完全一样的 不同点: 方法传递的参数不同
</p> <p> call,apply作用就是借用别人的方法来调用,就 像在调用自己的方法一样 </p> </body> <script type="text/javascript"> function print(a, b, c, d) { alert(a + b + c + d); } function example(a, b, c, d) { // 用 call 方式借用 print,参数是打散传递的 // print.call(this,a,b,c,d); // 用 apply 方式借用print,参数作为一个数组 // 传递的,这里用的是JavaScript方法内本身 // 有的arguments数组 // print.apply(this, arguments); print.apply(this, [a, b, c, d]); } example('', '', '', ''); </script> </html>
原文地址:https://www.cnblogs.com/zbly/p/10175576.html