标签:
之前出于好奇想自己实现apply的功能(不使用call,bind),一写才发现用eval无法实现,除非传入的参数全是字符串。
今天突然看到这个ES6新特性spread opertor,发现有戏了
Function.prototype.apply2 = function(obj, arg) { var t = typeof obj == ‘object‘ && !!obj ? obj : window, res; t.__func__ = this; if(arg) { if(!Array.isArray(arg)) throw ‘arg is not array‘; res = t.__func__(...arg); //es6 } else { res = t.__func__(); } delete t.__func__; return res; };
ES6 spread operator 实现Function.prototype.apply
标签:
原文地址:http://www.cnblogs.com/coiorz/p/5158143.html