在MS JScript中,我可以写
WSH.Echo("hello world");并通过命令行cscript.exe运行它,它的工作方式与预期一致。
但是,如果我想使用函数print()进行打印,一种解决方案是将目标函数赋给一个名为print的变量,如下所示,它适用于大多数JS解释器
var print=WSH.Echo
print("hello world");但这不适用于cscript.exe,并输出以下错误消息
Microsoft JScript runtime error: Object doesn't support this property or method我做错了什么吗?有没有什么捷径可以不用为我想要重命名的每个函数编写单独的包装器函数?
发布于 2011-06-23 22:23:28
正在调用的函数的上下文正在更改。如果WSH函数包含对this的相对引用,则需要在Echo对象的上下文中调用该函数。一个简单的解决方案是只使用包装器函数:
var print = function (param)
{
WSH.Echo(param);
};现在,重复做这件事当然很糟糕,所以你会想要做一个包装器生成器:
function alias(fn, context)
{
return function(param)
{
context[fn](param);
};
}
var print = alias('Echo', WSQ);https://stackoverflow.com/questions/6455563
复制相似问题