gpt4 book ai didi

javascript - 在 typescript (javascript)中向类方法添加方法

转载 作者:搜寻专家 更新时间:2023-10-30 21:09:59 25 4
gpt4 key购买 nike

我想在一个方法中添加一个方法:

class MyClass {
public foo(text: string): string {
return text + ' FOO!'
}

// Some magical code which adds the method `bar` to `foo`.
}

const obj = new MyClass();
console.log(obj.foo('thing'));
console.log(obj.foo.bar('other thing'));

这可能吗?我找到了 similar case对于函数:

function Sum(x: number) { /*...*/ }
namespace Sum {
export function empty() { /*...*/ }
}

有没有办法对类的方法做同样的事情?

我希望在类中有代码,而不是在创建对象后进行猴子修补。

最佳答案

您可以访问类原型(prototype)上的函数并用它做任何您喜欢的事情。我不认为它特别漂亮,但你可以这样做:

class MyClass {
constructor(myName) {
this.myName = myName
this.constructor.prototype.foo.bar = (function(a) {
console.log(this.myName, "calling foo.bar with:", a)
}).bind(this)
}
foo(text) {
return text + ' FOO!'
}

}

const obj = new MyClass("Mark");
obj.foo.bar('thing')
console.log(obj.foo('test'))

关于javascript - 在 typescript (javascript)中向类方法添加方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52670406/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com