定义函数a
时,Javascript将函数定义以及其他属性存储在a
中。有没有一种方法可以覆盖函数定义而不更改其其他属性?
例如,如果我具有此功能:
let a = () => {
return 'a';
}
a.myprop = 'my prop';
我想在不更改属性myprop
的情况下覆盖它。
答案 0 :(得分:2)
否,定义函数后,函数 code 是不可变的。唯一要做的另一件事是创建一个 new 函数并将所有属性从旧函数复制到新函数:
// Examine results in browser console, not snippet console:
const a = () => {
return 'a';
}
a.myprop = 'my prop';
console.dir(a);
const aNew = () => {
console.log('aNew');
};
Object.assign(aNew, a);
console.dir(aNew);