var s = Array.prototype.slice; var a = function () { //注意这里用的是 s.call(arguments) var arg = s.call(arguments); if (arg.length > 0) { alert(arg[0]); } }; a('我是a的一个参数'); var _s = Function.prototype.call.bind(s); var b = function () { //注意这里用的是 _s(arguments),比上面的少用了call哦, //奥妙就在11行,返回的_s是在call上绑定了s, //调用_s()就相当于s.call(),开始可能很难理解。仔细想想吧 var arg = _s(arguments); if (arg.length > 0) { alert(arg[0]); } } b('我是b的一个参数');