Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.11.2021, 22:09
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

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

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

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

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

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

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

Последний раз редактировалось with-love-from-siberia, 10.11.2021 в 22:11.
Ответить с цитированием
  #2 (permalink)  
Старый 11.11.2021, 06:26
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

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

Ты можешь использовать 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;

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

Последний раз редактировалось Aetae, 11.11.2021 в 06:32.
Ответить с цитированием
  #3 (permalink)  
Старый 11.11.2021, 07:50
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

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

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

Код:
typeof function() {}
// function

typeof WScript.StdIn.ReadLine
// unknown

Последний раз редактировалось with-love-from-siberia, 11.11.2021 в 07:56.
Ответить с цитированием
  #4 (permalink)  
Старый 11.11.2021, 16:39
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

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

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

Последний раз редактировалось Aetae, 11.11.2021 в 16:41.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск