原生js 完成call、apply要领

call完成代码

        Function.prototype.newCall = function(){
            var ctx = arguments[0] || window
            ctx.dx = this
            var args = []
            for(var i=1; i<arguments.length; i++){
                args.push('arguments['+ i +']')
            }
            var result = eval('ctx.dx('+args.join(',')+')')
            delete ctx.dx
            return result
        }

apply完成代码

            Function.prototype.newApply = function(ctx, arr){
                var ctx = ctx || window
                ctx.dx = this
                if(arr){
                    var args = []
                    for(var i=0; i<arguments.length; i++){
                        args.push('arguments['+ i +']')
                    }
                    var result = eval('ctx.dx('+args.join(',')+')')
                    delete ctx.dx
                    return result
                }else{
                    ctx.dx()
                    delete ctx.dx
                    return result                
                }        
            }
    原文作者:joga
    原文地址: https://segmentfault.com/a/1190000019079653
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞