Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   NAME и NAME() (https://javascript.ru/forum/misc/83294-name-i-name.html)

with-love-from-siberia 10.11.2021 22:09

NAME и NAME()
 
Здравствуйте, знатоки

Долго думал, как более разумно назвать тему, но ничего лучше на ум не пришло.

У меня появилась блажь - организовать доступ к WScript.StdIn следующим образом:

Код:

STDIN - вернуть объект WScript.StdIn
STDIN() -вызвать метод WScript.StdIn.ReadLine()

Пытался поиграть с (пере)определением STDIN.valueOf и STDIN.prototype, но ничего не получилось. Либо что-то делал неправильно, либо желаемое совсем не реализуемо.

WScript это объект Windows Script Host.

Подскажите, пожалуйста, есть ли смысл в таких телодвижениях? И если возможно, то как это реализовать?

Aetae 11.11.2021 06:26

Без вариантов. Либо это функция, либо это не функция.

Ты можешь использовать Proxy() (если можешь, в IE оно не работает):
STDIN = new Proxy(WScript.StdIn.ReadLine, {
  get(target, prop) {
    return WScript.StdIn[prop]
  }
})

Ты можешь подменить цепочку наследования, типа:
function magic(...args) {
  return WScript.StdIn.ReadLine(...args);
}
magic.__proto__ = WScript.StdIn;

Но в любом случае это буде не тот же самый объект.

with-love-from-siberia 11.11.2021 07:50

Цитата:

Сообщение от Aetae (Сообщение 541336)
Без вариантов.

К сожалению, JScript реализован на уровне где-то между ES3 и ES4, поэтому многие современные вкусняшки не существуют, а их эмуляция, если и возможна, требует больших библиотек.

К тому же, методы объектов WSH не являются функциями в терминологии javascript:

Код:

typeof function() {}
// function

typeof WScript.StdIn.ReadLine
// unknown


Aetae 11.11.2021 16:39

JScript то да. Но если юзать hta - можно было работать с WScript и прочим в js движке последнего IE.

Сейчас я отошёл от этой темы, если мне надо что-то заскриптовать себе на js - я просто использую node, который всё равно у меня, как разраба, всегда стоит.)
Но вроде ещё с 8 винды появилась возможность написания под софта под винду на нормальном js, также что-то лродно было добавиться с появлением edge...


Часовой пояс GMT +3, время: 21:40.