覆盖功能而不更改其其他属性

时间:2019-10-02 09:02:43

标签: javascript

定义函数a时,Javascript将函数定义以及其他属性存储在a中。有没有一种方法可以覆盖函数定义而不更改其其他属性?

例如,如果我具有此功能:

let a = () => {
    return 'a';
}

a.myprop = 'my prop';

我想在不更改属性myprop的情况下覆盖它。

1 个答案:

答案 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);