小编jan*_*nko的帖子

使用typeof检查时,会调用window.external上的无参数方法

我试图在System.Windows.Forms.WebBrowser控件中显示带有嵌入式JavaScript代码的HTML页面.期望JavaScript代码通过window.external对象与嵌入环境交互.在调用方法之前window.external,JavaScript应该检查方法是否存在.如果不存在,代码应该调用通用的回退方法.

// basic idea
if (typeof(window.external.MyMethod) != 'undefined') {
    window.external.MyMethod(args);
} else {
    window.external.Generic("MyMethod", args);
}
Run Code Online (Sandbox Code Playgroud)

但是,检查无参数方法typeof似乎已经调用了该方法.也就是说,如果MyMethod接受任何正数的参数,上面的代码将完美地工作; 但是,如果MyMethod是无参数方法,则表达式typeof(window.external.MyMethod)不会检查其类型,而是调用它.

这种行为有没有解决方法?我可以以某种方式逃避表达式,window.external.MyMethod以防止方法调用发生?

javascript c# internet-explorer webbrowser-control

13
推荐指数
2
解决办法
4081
查看次数

字符串是不可变的 - 这意味着我永远不应该使用+ =而且只能使用StringBuffer?

字符串是不可变的,这意味着,一旦创建它们就无法更改.

那么,这是否意味着如果你用+ =附加的东西比你创建一个StringBuffer并附加文本那么需要更多的内存?

如果你使用+ =,每次必须保存在内存中时你会创建一个新的'对象',不是吗?

java string stringbuilder stringbuffer immutability

11
推荐指数
4
解决办法
6310
查看次数

如何在Web服务上工作时获取会话对象?

如何在Web服务上工作时获取会话对象?

服务在两个程序之间调用.如何使用webservices处理用户会话对象.使用请求对象无法获取会话,因为在讨论服务时不会有请求或响应.

java session web-services

2
推荐指数
1
解决办法
4718
查看次数