Function.prototype.mycall = function(obj = window,...args){ obj.fn = this; obj.fn(...args); delete obj.fn } 就这样简单3行代码:接收一个对象,和一些参数,当对象不存在就默认取window。 然后把该方法本身付在obj对象上,执行该方法,最后删除痕迹。就达到了原生call的功能。 使用案例: function Product(name, price) { this.name = name; this.price = price; } let obj = {}; Product.mycall(obj,"刘",32)
转载于:https://my.oschina.net/u/3971746/blog/3071742