Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp classic 服务器端javascript-经典asp_Asp Classic_Javascript - Fatal编程技术网

Asp classic 服务器端javascript-经典asp

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(

在客户端javascript中,“this”操作符是窗口对象。 经典asp服务器端javascript中的“this”操作符是什么

在下面的代码中,在经典ASP服务器端运行时,“this”引用的是什么

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]