zoukankan      html  css  js  c++  java
  • Function.prototype.call 和 Function.prototype.apply 的区别

     call和apply函数是function函数的基本属性,都可以用于更改函数对象和传递参数,是前端工程师常用的函数。具体使用方法请参考以下案列:

     例如:

       申明函数: var fn = function (msg, isalert) { if (isalert) alert(this + msg); };

       用法:

        call: fn.call(/*context,arg1,arg2,...*/);

        apply:fn.call(/*context,[arg1,arg2,...]*/);

       讲述:第一个参数(context)将成为 fn 函数的 this 对象,参数 arg1 对应fn函数的参数 msg,参数 arg2 对应fn函数的参数 isalert;

       注:apply函数的第二个参数是数组!!!

       模型:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>call和apply函数</title>
        <style type="text/css">
            *{float:left;width:100%;margin-left:20px;}
            *{max-height:100%;max-width:100%}
            *,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box}
            html{font-size:10px;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
            body{margin:0 auto;width:80%;background-color:#fff;color:#333;font-size:10pt;font-family:"Helvetica Neue Light","Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;line-height:1.42857143}
            div{margin:0;}
            span{font-size:16px;font-weight:600;margin-top:10px;}
            code{line-height:30px;padding:5px;margin:10px 20px;border:1px solid #fcc;}
            .button
            {
                font-size: 16px;
                font-weight: 300;
                line-height: 32px;
    
                display: inline-block;
    
                width:auto;
                height: 32px;
                padding: 0 20px;
    
                -webkit-transition: .3s all;
                   -moz-transition: .3s all;
                    -ms-transition: .3s all;
                     -o-transition: .3s all;
                        transition: .3s all;
                text-align: center;
                text-decoration: none;
    
                color: #fff;
                border: none;
                border-radius: 4px;
    
                appearance: none;
                -webkit-box-orient: vertical;
            }
            .button:hover,
            .button:focus,
            .button:active,
            {
                -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);
                   -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);
                        box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);
                text-shadow: 0 1px 0 rgba(255, 255, 255, .3);
    
                    -ms-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);
                     -o-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .2);
            }
            .button:hover
            {
                text-decoration: none;
    
                color: #fff;
                outline: none;
            }
            .button:focus
            {
                color: #fee;
            }
            .button:visited
            {
                color: #fff;
            }
            .button:active
            {
                text-decoration: none;
    
                color: #fff;
            }        
            .button.gold
            {
                border-color: #feae1b;
                background-color: #feae1b;
            }
            .button.gold:hover,
            .button.gold:focus
            {
                border-color: #fec04e;
                background-color: #fec04e;
            }
            .button.gold:active
            {
                color: #e59501;
                border-color: #f3ab26;
                background-color: #f3ab26;
            }
        </style>
        <script type="text/javascript">
            var fn = function (msg, isalert) {
                if (isalert) alert(this + msg);
            };
            function call() {
                fn.call("我是:", "工具包(cntooltik)", true);
            }
            function apply() {
                fn.apply("我是:", ["工具包(cntooltik)", true]);
            }
        </script>
    </head>
    <body>
        <span>申明函数:</span>
        <div>
            <code>
                 var fn = function (msg, isalert) {
                    if (isalert) alert(this + msg);
                };
            </code>
        </div>
        <span>函数调用:</span>
        <div>
            <code>
                function call() {
                    fn.call("我是:", "工具包(cntooltik)", true);
                }
            </code>
        </div>
        <button class="button gold" onclick="javascript:call()">call函数测试</button>
        <div>
            <code>
                function apply() {
                    fn.apply("我是:", ["工具包(cntooltik)", true]);
                }
            </code>
        </div>
        <button class="button gold" onclick="javascript:apply()">apply函数测试</button>
    </body>
    </html>
    View Code
    完美,只是因为简单。
  • 相关阅读:
    error C4996: Function call with parameters that may be unsafe
    C mysql (C API Commands out of sync; you can't run this command now)
    messagpack的使用
    关于openssl的编译与使用
    openssl & openssh
    解决SOCKET通信 ERROR_INSUFFICIENT_BUFFER错误
    C++ mysql 乱码
    [置顶] docker1.12--docker命令行帮助文档
    [置顶] kubernetes资源类型--secret和Service Account
    [置顶] kubernetes资源类型--Volume
  • 原文地址:https://www.cnblogs.com/jschar/p/6072812.html
Copyright © 2011-2022 走看看