javascript - 通过 ES7 装饰器获取方法参数
问题描述
我正在试验 ES7 装饰器并编写一个方法装饰器,它只记录调用方法的参数。
它适用于某些情况,例如this.sum(6, 5)
,但不适用于箭头函数this.arrowSum(5, 10)
和默认参数this.sum()
我是否遗漏了某些东西,或者它只是当前装饰器实现中的一个限制?
import React from "react";
import ReactDOM from "react-dom";
function logArgs() {
return function(target, property, descriptor) {
let originalMethod = descriptor.value;
descriptor.value = function(...args) {
console.log(...args);
return originalMethod.call(this, ...args);
};
return descriptor;
};
}
class App extends React.Component {
@logArgs()
sum(a = 1, b = 2) {
return a * b;
}
@logArgs()
arrowSum = (a = 3, b = 4) => {
return a * b;
};
render() {
return (
<div>
{this.sum()} <br /> {this.sum(6, 5)}
<br />
{this.arrowSum()} <br /> {this.arrowSum(5, 10)}
</div>
);
}
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
解决方案
推荐阅读
- excel - 对时间点使用 averageifs 函数
- ruby-on-rails - has_many :through :: HasManyThroughOrderError
- php - 数组被保存到文件中,一旦反序列化就没有正确填充
- scala - Scala Log4j 配置
- linux - 使用 mod 函数 linux 进行 rsa 加密
- javascript - 将 C# 对象的可变长度的对象属性连接到对象的新属性中
- ojalgo - 使用 ojalgo 计算滚动平均值
- java - Android Studio 等待蓝牙启用
- angular - 与 Typescript 的集成测试不会调用回调订阅
- angular - 带有 TranslateService 的未定义 gridOptions