Здравствуйте, Left2, Вы писали:
no4>>JScript более приятный, зато VBS интегрирован с COM лучше — он понимает COM коллекции,
L>ЕМНИП, через обьект Enumerator JScript тоже умеет с коллекциями работать.
Да
e = new Enumerator(obj);
for (e.moveFirst(); ! e.atEnd(); e.moveNext()) {
x = e.item();
//...statements using x
}
вместо
for each x in obj
'//...statements using x
next
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
ну, в случае с JS это решается одним-единственным враппером:
// Функция для прохода по всем эл-там коллекции
function EnumerateAll(fnToExec) {
for (var e = new Enumerator(obj); ! e.atEnd(); e.moveNext()) {
fnToExec(e.item());
}
};
// потом в коде:
EnumerateAll(function(el) { /* Do something with el */ });
... << RSDN@Home 1.2.0 alpha rev. 676>>
Здравствуйте, Left2, Вы писали:
L>ну, в случае с JS это решается одним-единственным враппером:
L>L>// Функция для прохода по всем эл-там коллекции
L>function EnumerateAll(fnToExec) {
L> for (var e = new Enumerator(obj); ! e.atEnd(); e.moveNext()) {
L> fnToExec(e.item());
L> }
L>};
L>// потом в коде:
L>EnumerateAll(function(el) { /* Do something with el */ });
L>
А obj внутри врапера ни при делах?
По видимому его надо тоже сделать параметром функции EnumerateAll?
Здравствуйте, Left2, Вы писали:
L>ну, в случае с JS это решается одним-единственным враппером:
L>L>// Функция для прохода по всем эл-там коллекции
L>function EnumerateAll(fnToExec) {
L> for (var e = new Enumerator(obj); ! e.atEnd(); e.moveNext()) {
L> fnToExec(e.item());
L> }
L>};
L>// потом в коде:
L>EnumerateAll(function(el) { /* Do something with el */ });
L>
А вот так не получается
Object.prototype.each = function (action){
for (var e = new Enumerator(obj); ! e.atEnd(); e.moveNext()) {
action(e.item());
}
}
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
M>А obj внутри врапера ни при делах?
M>По видимому его надо тоже сделать параметром функции EnumerateAll?
Ну да — сорри, наколенный педаляж

... << RSDN@Home 1.2.0 alpha rev. 676>>
no4>А вот так не получается
typeof(CollectionOfCOMOvjects) != "object", ЕМНИП.
Скорее всего, typeof(CollectionOfCOMOvjects) == "unknown".
Потому и не получается, я так думаю.
... << RSDN@Home 1.2.0 alpha rev. 676>>
Главное и основное отличие — это синтаксис.
Если Вы поклонник C,C#,C++ или Java — то Вам лучше пользоваться JavaScript.
Если Basic,VB(A),VB.NET — то VBS
То, что лично меня убивает в VBS:
1) begin/end вместо {}
2) еси ф-я возвращает значение — то пишется со скобками. Иначе — без.
пример:
a = MyProc()
но
MsgBox 'a'
3) отсутствие ;
4) в AND выполняются оба условия, даже если первое ложно. IF (FALSE AND (0/0)) выдаст ошибку деления на ноль.
Но есть в VBS и приятные фичи: например там есть Input, аналога которого нет в JS
В целом же языки позволяют делать одно и тоже.
Выбор между JS/VBS для WSH напоминает выбор межлду C#/VB.NET — дело вкуса.