// 这里未用apply ,执行结果正常 'use strict'; var count = 0; var oldParseInt = parseInt; // 保存原函数 window.parseInt = function () { count += 1; return oldParseInt(arguments); // 调用原函数 }; // 测试: parseInt('10'); parseInt('20'); parseInt('30'); console.log('count = ' + count); // 3 //原版 'use strict'; var count = 0; var oldParseInt = parseInt; // 保存原函数 window.parseInt = function () { count += 1; return oldParseInt.apply(null, arguments); // 调用原函数 }; // 测试: parseInt('10'); parseInt('20'); parseInt('30'); console.log('count = ' + count); // 3
这里实现装饰器效果不用apply也可以啊,对于parseInt这样可能没有使用未绑定对象属性的方法应该可以不用apply吧?
那是因为你只考虑的count的输出结果,实际上还是要调用parseInt的呀,不能为了计数前面的函数啥都不做了
Sign in to make a reply
用户7303966659
这里实现装饰器效果不用apply也可以啊,对于parseInt这样可能没有使用未绑定对象属性的方法应该可以不用apply吧?