Câu hỏi này liên quan đến Javascript trong ASP cổ điển. Nó không có gì để làm với Javascript chạy trong trình duyệt.Chèn đối tượng vào phạm vi toàn cầu trong ASP/Javascript cổ điển
Một cấu trúc điển hình cho một mô-đun JS được thiết kế để được tái sử dụng được là như thế này:
(function(globalScope) {
... declarations here...
}(this));
này cho phép mã được gói gọn cú pháp, để cho phép kiểm tra bởi thời gian chạy phân tích cú pháp/biên dịch . Nó cũng cung cấp quản lý phạm vi, để các vars và các hàm được khai báo bên trong các curlies sẽ không hiển thị bên ngoài.
Một cấu trúc điển hình là để "xuất khẩu" một đối tượng hoặc chức năng thuộc phạm vi bên trong, với phạm vi bên ngoài, thông qua chuyển nhượng, như thế này:
(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"
Đây là tất cả khá điển hình.
Khi sử dụng loại cấu trúc này trong ASP cổ điển (chú ý: javascript phía máy chủ !!), công cụ JS sẽ hoạt động. Tôi gặp lỗi 500.
Tại sao?
Tôi có thể sử dụng cấu trúc phạm vi và các điều "xuất" cho phạm vi toàn cầu, trong ASP cổ điển không?
Trong thời gian chạy trình duyệt, "điều này" sẽ được tính là "cửa sổ". Trong một thời gian chạy ASP cổ điển phía máy chủ, giá trị của "cái này" toàn cầu là gì? Có thể gán các thuộc tính mới cho "điều này" không?