Discuss / JavaScript / 【疑问】-aply实现装饰器-不用apply不起到一样效果吗

【疑问】-aply实现装饰器-不用apply不起到一样效果吗

Topic source
// 这里未用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吧?

bili小翁

#2 Created at ... [Delete] [Delete and Lock User]

那是因为你只考虑的count的输出结果,实际上还是要调用parseInt的呀,不能为了计数前面的函数啥都不做了


  • 1

Reply