阅读depd源码有感:
var fn = function(a, b, c) { return a + b + c; } var args = createArgumentsString(fn.length) function createArgumentsString(arity) { var str = ‘‘ for(var i = 0; i < arity; i++) { str += ‘, arg‘ + i } return str.substr(2) } console.log(args); var deprecatedfn = eval(‘(function (‘ + args + ‘) {\n‘ + ‘"use strict"\n‘ + ‘return fn.apply(this, arguments)\n‘ + ‘})‘) console.log(deprecatedfn(1,5,3));
js虽然不能在函数外直接拿到参数,但是可以通过这种伪装函数拿到参数再去执行原函数,从而实现函数劫持。