在经典asp中使用服务器端JavaScript:“this”有什么问题?
相似:Inserting objects into global scope in classic ASP/Javascript在经典asp中使用服务器端JavaScript:“this”有什么问题?
试图开始使用在传统的ASP使用JavaScript。似乎是这样的一些“陷阱”:任何有这方面经验的人都可以告诉我“Blah2”代码是怎么回事?好像它“应该”的工作,但似乎与我用“这个” ...
<script language="javascript" runat="server">
var Blah = {};
Blah.w = function(s){Response.write(s);}
Blah.w('hello'); //this works...
var Blah2 = function(){
this.w = function(s){Response.write(s);}
//line above gives 'Object doesn't support this property or method'
return this;
}();
Blah2.w('hello');
</script>
感谢任何指针
添
你需要在你的功能括号中的问题
var Blah2 = (function(){
this.w = function(s){Response.write(s);}
//line above gives 'Object doesn't support this property or method'
return this;
}());
此外,this.w
没有做你想做的。 this
实际上指向那里的全局对象。你想:
var Blah2 = (function(){
return {w : function(s){ Response.write(s); }};
}());
或者
bar Blah2 = new (function(){
...
其他人请跳进来纠正我,如果我错了,但我很漂亮在我使用它的上下文中确定“this”是指函数Blah2,而不是全局对象......至少,它是如何在浏览器中工作的:我不清楚的是它为什么不起作用这个背景。除非你在服务器端ASP中专门说*,它可以像你描述的那样工作吗? – 2011-03-24 04:40:44
不,除非你用'new'创建一个对象。如果你不相信我,可以在任何浏览器中运行它:'function blah(){alert(this === window); } blah()'。函数调用本身不具有'this'集合。 – 2011-03-24 04:42:47
我应该补充说明你的第二个例子(类似于我的第一个例子)*做*工作。我真的只是想知道为什么“这个”在这方面似乎是一个问题。 – 2011-03-24 04:44:32
@Sebastian:经典ASP允许您使用VBScript或JavaScript的在服务器端。 – 2011-03-24 01:13:12
你可能会意识到这一点,但不管信不信,有些人不会 - “经典”ASP不应该被使用,除非你别无选择。 – 2011-03-24 01:13:51
@John:是的,我知道现在我应该用asp.net加快速度(毕竟,至少现在已经有10年了)。然而,我对传统的ASP非常熟悉,有一个快速推出的项目,并且认为我至少会尝试从服务器端vbscript切换到j(ava)脚本来学习新的东西(旧?刷上一点JSON。 – 2011-03-24 04:34:24