Если вам действительно нужно, чтобы это свойство было в прототипе, вы можете использовать пользовательское свойство getter.
// constructor
function As(data) {
this.data = data
}
Object.defineProperty(As.prototype, 'helloWorld', {
get: function() {
function helloWorld() {
console.log(this.data)
}
helloWorld.myMethod = (function(){
console.log(this.data)
}).bind(this);
return helloWorld;
}
});
const asI = new As('some data')
asI.helloWorld() // => 'some data'
// desired
asI.helloWorld.myMethod() // desired result: => 'some data'
Имейте в виду, что эта наивная реализация будет создавать новые функции каждый раз, когда вы обращаетесь к helloWorld
.