iis – 在经典ASP / Javascript中将对象插入全局范围
这个问题与经典ASP中的
Javascript有关.它与在浏览器中运行的Javascript无关.
设计为可重用的JS模块的典型构造如下: (function(globalScope) { ... declarations here... }(this)); 这允许在语法上封装代码,以允许运行时解析器/编译器进行检查.它还提供范围管理,以便在curlies中声明的vars和函数在外部不可见. 另一个典型的构造是通过赋值将属于内部作用域的对象或函数“导出”到外部作用域,如下所示: (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" 这一切都非常典型. 在经典ASP中使用这种构造时(注意:服务器端的javascript !!),JS引擎会抛出.我收到500错误. 为什么? 在经典ASP中,我可以使用范围构造并将事物“导出”到全局范围吗? 在浏览器运行时中,“this”评估为“window”.在服务器端的经典ASP运行时,全局“this”的价值是多少?是否可以为“this”分配新属性? 解决方法
我不确定底层类型是什么,但它将是一些COM对象.除非此COM对象实现IDispatchEx,否则您将无法为其分配任意属性.这是来自MSHTML的COM对象的情况,它是Internet Explorer的DHTML实现的基础.但是,似乎ASP没有提供相同的功能.
有一种解决方法,假设参数globalScope确实只是全局范围: (function() { var data = ['Alpha','Gamma']; function helper(a) { .... } function search(d) { .... } // "export" a function so it is externally visible searchData = search; })(); // Please not also small syntatic correction of your original code. 需要注意的是,属性searchData必须不会出现在作用域链的任何地方.在这种情况下,JScript将在全局级别创建它. 名称searchData确实成为活动脚本中的命名项(即,如果您还要在VBScript也可以看到searchData的同一页中包含一些VBScript).此外,this.searchData现已分配.似乎无论全局对象是什么,它都允许将成员名称的后期绑定解析映射到Active Script对象本身上的命名项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 单个控制器站点的ASP.NET MVC路由
- ASP.NET MVC和FubuMVC之间的主要区别是什么?
- asp.net-mvc – Rotativa / Wkhtmltopdf图像无法显示
- ASP.NET MVC全局授权过滤器强制登录AllowAnonymous操作
- 怎么将XML字符串转换为XmlDocument,并获取部分节点值
- asp.net – 在开发,分段和生产环境之间区分web.config
- asp.net-mvc – 在ASP.NET MVC应用程序下将ASP.NET Web API
- asp.net – 使用IIS7应用程序请求路由修改标头
- 白屏问题,如果用户在asp.net页面中保持空闲状态
- asp.net-mvc – 未设置localhost cookie
- asp.net-mvc-3 – MVC 3 – 比较属性 – 在客户端
- asp.net – 什么项目层应该屏幕DTO的生活?
- 用户锁定.net 4.5.1 ASP.NET MVC 5
- 第15章 扩展ASP.NET MVC
- asp.net – 在web.config中编码url
- asp.net-mvc – FluentValidation Autofac Valid
- asp.net – 仅限RadComboBox下拉列表
- asp.net – 用于存储表单字段和字段值的数据库架
- asp.net – ResolveUrl / Url.Content在Classic
- 如何在ASP.NET Core MVC 1.0中创建和管理插件?