Попробуйте это:
let text = function (myarg) {
// Usage: var t = new text(<arg>);
this.uniqueProperty = "test";
var main = () => {
// main code
return {
toArr: () => {
return [myarg, this.uniqueProperty];
}
};
};
return main;
}
var t = new text("hey world");
console.log(t());
console.log(t().toArr());
Звонки такие же, как в вашем вопросе
Примечание: ваша основная функция теперь возвращает объект.
Как это работает?
Вы вызываете new text("arg")
, но конструктор возвращает главную функцию вместо this
. Функция main возвращает объект с функцией toArr
, и к ней можно получить доступ через код new text("arg")().toArr
. Почему я поместил обе функции в () => {}
?. Ответ прост - это как получить доступ к свойствам текстового экземпляра. Таким образом, мы можем получить доступ к уникальным text
свойствам. Иначе, this
будет main
ссылкой на функцию.