标签: invocation

为什么JavaScript中的某些函数调用被称为"非法调用"?

例如,如果我这样做:

var q = document.querySelectorAll;

q('body');
Run Code Online (Sandbox Code Playgroud)

我在Chrome中收到"非法调用"错误.我想不出为什么这是必要的任何理由.首先,并非所有本机代码功能都是如此.事实上我可以做到这一点:

var o = Object; // which is a native code function

var x = new o();
Run Code Online (Sandbox Code Playgroud)

一切正常.特别是在处理文档和控制台时我发现了这个问题.有什么想法吗?

javascript invocation

79
推荐指数
1
解决办法
4万
查看次数

在Java中选择哪个重载为空?

如果我用Java写这行:

JOptionPane.showInputDialog(null, "Write something");
Run Code Online (Sandbox Code Playgroud)

将调用哪种方法?

  • showInputDialog(Component parent, Object message)
  • showInputDialog(Object message, Object initialSelectionValue)

我可以测试一下.但在其他类似的情况下,我想知道会发生什么.

java parameters methods invocation

52
推荐指数
3
解决办法
8270
查看次数

未捕获的TypeError:javascript中的非法调用

我正在创建一个lambda函数,它使用具体的params执行第二个函数.这个代码适用于Firefox,但不适用于Chrome,它的检查器显示一个奇怪的错误,Uncaught TypeError: Illegal invocation.我的代码出了什么问题?

var make = function(callback,params){
    callback(params);
}

make(console.log,'it will be accepted!');
Run Code Online (Sandbox Code Playgroud)

javascript lambda functional-programming invocation

36
推荐指数
1
解决办法
3万
查看次数

寻找一种从C++调用Java的便捷方法

似乎大多数与JNI(Java Native Interface)相关的文档或帮助程序库都涉及从Java调用本机代码.这似乎是它的主要用途,即使它能够更多.

我想主要在相反的方向上工作:通过向其添加一些Java库来修改现有的(相当大的)可移植C++程序.例如,我想让它通过JDBC调用数据库,或者通过JMS调用消息队列系统,或发送电子邮件,或调用我自己的Java类等.但是使用原始JNI这是非常不愉快和容易出错的.

所以我理想地想编写可以像C++/CLI一样调用CLR类的C++代码来调用Java类.就像是:

using namespace java::util::regex; // namespaces mapped

Pattern p = Pattern.compile("[,\\s]+");

array<java::lang::String> result = 
    p.split("one,two, three   four ,  five");

for (int i=0; i < result.length(); i++)
    std::cout << result[i] << std::endl;
Run Code Online (Sandbox Code Playgroud)

这样,我就不必通过传递名称和奇怪的签名字符串手动完成获取方法ID的工作,并且可以防止由未经检查的API调用方法引起的编程错误.实际上它看起来很像等效的Java.

NB.我还在谈论使用JNI!作为一项基础技术,它非常适合我的需求.它"在进行中"并且高效.我不想在一个单独的进程中运行Java并对它进行RPC调用.JNI本身很好.我只想要一个愉快的界面.

必须有一个代码生成工具来创建等效的C++类,命名空间,方法等,以完全匹配我指定的一组Java类所公开的内容.生成的C++类将:

  • 拥有接受其参数的类似包装版本的成员函数,然后执行必要的JNI voodoo来进行调用.
  • 以相同的方式包装返回值,以便以自然的方式链接调用.
  • 维护方法ID的每类静态缓存,以避免每次都查找它们.
  • 完全是线程安全的,可移植的,开源的.
  • 每次调用方法后自动检查异常并产生std C++异常.
  • 当我以通常的JNI方式编写本机方法时,也可以工作,但我需要调用其他Java代码.
  • 数组应该在原始类型和类之间完全一致.
  • 毫无疑问需要像global这样的东西来包装引用,当它们需要在本地引用框架之外生存时 - 再次,应该对所有数组/对象引用都一样.

这样一个免费的,开源的,可移植的库/工具是存在还是我在做梦?

注意:我发现了这个现有的问题,但在那种情况下,OP并不像我一样对完美的要求......

更新:关于SWIG的评论引发了我之前的问题,这似乎表明它主要是相反的方向,所以不会做我想要的.

重要

  • 这是关于能够编写操纵Java类和对象的C++代码,而不是相反(参见标题!)
  • 我已经知道JNI存在了(请参阅问题!)但是手工编写的代码到JNI API是不必要的冗长,重复,容易出错,在编译时没有类型检查等.如果你想缓存方法ID和类对象它更加冗长.我想自动生成C++包装类,为我处理所有这些.

更新:我已经开始研究自己的解决方案了:

https://github.com/danielearwicker/cppjvm

如果这已经存在,请告诉我!

NB.如果您正在考虑在自己的项目中使用它,请自由,但请记住,现在代码已经有几个小时了,到目前为止我只编写了三个非常不费力的测试.

java java-native-interface swig invocation

31
推荐指数
2
解决办法
2万
查看次数

forEach函数调用的调用上下文(this)

我想知道forEach回调函数的'this'值(或调用上下文)是什么.此代码似乎不起作用:

var jow = [5, 10, 45, 67];

jow.forEach(function(v, i, a){

    this[i] = v + 1;

});

alert(jow);
Run Code Online (Sandbox Code Playgroud)

谢谢你向我解释.

javascript foreach function this invocation

25
推荐指数
4
解决办法
3万
查看次数

iOS xcode 5 crashlytics错误 - Shell脚本调用错误 - ./Crashlytics.framework/run:权限被拒绝

我将Crashlytics Framework添加到我的项目中,并附带一个脚本.运行脚本:Shell:/ bin/sh脚本:./ Crashlytics.framework/run KEY_HERE

当我尝试运行该项目时,我收到以下错误:

Shell脚本调用错误 - ./Crashlytics.framework/run:权限被拒绝

但是,如果我删除框架并再次添加它,它运行良好... ONCE.然后下次我得到同样的错误.然后我必须删除它,并重新添加它,因为它只运行一次,然后相同的故事......

有人知道如何解决这个问题吗?提前致谢.

invocation ios crashlytics xcode5

16
推荐指数
3
解决办法
1万
查看次数

如何确定某个特定代表是否已分配给某个活动?

我在winform上有一个命令按钮.所以,如果我有类似的东西:

myButton.Click += MyHandler1;
myButton.Click += MyHandler2;
myButton.Click += MyHandler3;
Run Code Online (Sandbox Code Playgroud)

如何判断是否已将任何特定的MyHandler添加到Click事件中,以便它不会再添加到我的代码中的其他位置?

我已经阅读了如何使用GetInvocationList()来获取自己的事件信息.但是在尝试使用各种组合获取命令按钮的项目时出错.它说,

"事件'System.Windows.Forms.Control.Click'只能出现在+ =或 - =的左侧."

我错过了什么?

[编辑] - 我想强调艾哈迈德指出的这个问题.这是一个kludge,应该更容易恕我直言,但看起来它可能只是工作.

c# reflection delegates invocation winforms

11
推荐指数
1
解决办法
8835
查看次数

字符串中的PowerShell ToUpper()

这有效:

Output "Cluster Group: ""$($Group.Name)"", Current Owner: $($Group.OwnerNode), Current State: $($Group.State)"
Run Code Online (Sandbox Code Playgroud)

这不起作用:

Output "Cluster Group: ""$($Group.Name)"", Current Owner: $($Group.OwnerNode.ToUpper()), Current State: $($Group.State)"
Run Code Online (Sandbox Code Playgroud)

有一个错误:

Method invocation failed because [Microsoft.FailoverClusters.PowerShell.ClusterNode] doesn't contain a method named 'ToUpper'.
Run Code Online (Sandbox Code Playgroud)

有关如何将此字符串从Get-ClusterGroup字符串的输出变为大写的任何想法?谢谢!

string methods powershell invocation

11
推荐指数
2
解决办法
5万
查看次数

JavaScript中的getUserMedia()在浏览器中规范化.非法调用

当我尝试执行以下操作时:

var getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
// now I try to invoke it with some parameters:
getUserMedia(...) // not working!
Run Code Online (Sandbox Code Playgroud)

它在Chrome中引发错误"非法调用".

但如果我这样做:

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
// now invoke it with the navigator
navigator.getUserMedia(..) // Works
Run Code Online (Sandbox Code Playgroud)

我尝试了一下,我读到它是一个上下文问题.但我仍然无法理解那是什么意思.在第一个例子中,getUserMedia变量最终获得对不是不可取的函数的引用(即,在chrome的情况下,它是webkitGetUserMedia),那么为什么我不能使用这个变量调用它呢?

(这实际上是一个普遍的JavaScript问题,不是WebRTC特有的.)

javascript function invocation getusermedia

10
推荐指数
1
解决办法
2581
查看次数

在运行时调用方法

我想知道是否可以在运行时加载.net DLL,查看可用的方法并在运行时执行一个.

如果有可能,你可以指出我正确的方向

c# runtime invocation

9
推荐指数
1
解决办法
7039
查看次数