ES6 spread operator 实现Function.prototype.apply
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6 spread operator 实现Function.prototype.apply相关的知识,希望对你有一定的参考价值。
之前出于好奇想自己实现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的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript展开操作符(Spread operator)介绍
javascript 使用Spread Operator复制数组