Asp classic 服务器端javascript-经典asp
在客户端javascript中,“this”操作符是窗口对象。 经典asp服务器端javascript中的“this”操作符是什么 在下面的代码中,在经典ASP服务器端运行时,“this”引用的是什么Asp classic 服务器端javascript-经典asp,asp-classic,javascript,Asp Classic,Javascript,在客户端javascript中,“this”操作符是窗口对象。 经典asp服务器端javascript中的“this”操作符是什么 在下面的代码中,在经典ASP服务器端运行时,“this”引用的是什么 test(); function test() { Response.Write(typeof(this)); } 此并不总是指向窗口 以下代码中的这个是什么 function Test() { var obj = {}; obj.newFunc = function(
test();
function test()
{
Response.Write(typeof(this));
}
此
并不总是指向窗口
以下代码中的这个是什么
function Test() {
var obj = {};
obj.newFunc = function() { this.value = 42; }
obj.newFunc(); // "this" is "obj"
var obj2 = new obj.newFunc(); // Whoa, what's going on? "this" is the new object
}
在客户端JS和服务器端JS中,仅指向调用函数的上下文对象。您指的是服务器端JScript,而不是JavaScript
在JScript中,没有任何窗口或“全局对象”,就像在客户端JavaScript中一样,因此“this”几乎毫无意义,除非您在对象或类中,然后这个引用该对象的实例
对它的解释很好。这个对象似乎在服务器端asp页面的全局范围内受到特殊处理。在我的测试中,您可以将this.
附加到全局对象,如Response
(如阴影向导所怀疑的):
很好。但是您不能对这个对象本身进行反思。尝试for(此处为var键)
引发异常:
w3wp.exe[5868]中发生未经处理的异常(“对象不支持此操作”)
仅在测试this
的存在时,您会得到相同的异常:
if (this) { ... }
因此,它根本不是一个普通的javascript对象,而且(正如影子向导所说)在全局范围内非常无用。经典ASP JScript中的全局范围对象来自。在经典ASP中,此对象不可枚举。在IScriptingContext上定义的唯一对象是:
<%@ Language="Javascript"%>
<%
Response.Write(typeof this.Application + "<br>");
Response.Write(typeof this.Request + "<br>");
Response.Write(typeof this.Response + "<br>");
Response.Write(typeof this.Server + "<br>");
Response.Write(typeof this.Session + "<br>");
Response.Write(Object.prototype.toString.call(this) + "<br>");
%>
如果在窗口
(例如window.myFunction()
)的上下文中调用了它所显示的函数,则该运算符仅为窗口
,如果您不提供上下文,则默认情况下为窗口。我从未在任何编写良好的程序中看到过这一点<当您在实际对象的上下文中调用函数(如someButton.focus()
(其中this
等于focus函数中的someButton
)时,此
会变得很有用。更好的问题可能是“asp服务器端javascript中的全局作用域对象是什么?”我想这就是你想知道的。@David@Gabe他指的是用于编写经典ASP的服务器端JScript,除了基本语法之外,它与客户端JavaScript毫无关系。我认为找出全局范围内的内容的一种方法是编写一个简单的ASP脚本,该脚本具有for(在本例中为var-prop)响应。write(prop)代码>。在桌面上的Windows脚本主机JScript文件上执行类似的操作只给了我3个属性:WSH
、WScript
和prop
是的,我想知道全局对象是什么。我不认为“for(这个)Response.Write(prop);”在经典asp中有效“这在下面的代码中是什么?”-什么都没有,因为它只出现在一个永远不会被调用的方法中;)“无意义”是指未定义的<代码>空值
?没有属性的对象?@Gabe-我这里没有经典的ASP环境来确认它,但我相信它不会为null或未定义,例如,可能this.Response.Write(“hello”)<%@ Language="Javascript"%>
<%
Response.Write(typeof this.Application + "<br>");
Response.Write(typeof this.Request + "<br>");
Response.Write(typeof this.Response + "<br>");
Response.Write(typeof this.Server + "<br>");
Response.Write(typeof this.Session + "<br>");
Response.Write(Object.prototype.toString.call(this) + "<br>");
%>
object
object
object
object
object
[object Object]