Esta pregunta se refiere a Javascript en ASP clásico. No tiene nada que ver con Javascript corriendo en navegadores.Insertar objetos en el alcance global en ASP/Javascript clásico
Una construcción típica de un módulo de JS que está diseñado para ser re-utilizable es de esta manera:
(function(globalScope) {
... declarations here...
}(this));
Esto permite que el código a encapsular sintácticamente, para permitir el control por el tiempo de ejecución analizador/compilador . También proporciona administración de alcance, por lo que los vars y las funciones declaradas dentro de los curlies no serán visibles externamente.
Otra construcción típica es la de "exportación" un objeto o función pertenece al alcance interior, con el ámbito exterior, a través de la asignación, como este:
(function(globalScope) {
var data = ['Alpha', 'Beta', 'Gamma'];
function helper(a) { .... }
function search(d) { .... }
// "export" a function so it is externally visible
globalScope.searchData = search;
}(this));
// typeof this.searchData == "function"
// typeof this.data == "undefined"
// typeof this.helper == "undefined"
// typeof this.search == "undefined"
Todo esto es bastante típico.
Al utilizar este tipo de constructo en el clásico ASP (atención: ¡javascript del lado del servidor!) El motor JS se lanza. Recibo un error de 500.
¿Por qué?
¿Puedo usar la construcción de scoping y "exportar" cosas al alcance global, en ASP clásico?
En el tiempo de ejecución de un navegador, "esto" se evalúa como "ventana". En un tiempo de ejecución ASP clásico del lado del servidor, ¿cuál es el valor del "esto" global? ¿Es posible asignar nuevas propiedades a ese "esto"?