首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascriptcore ios调用类方法

Javascriptcore ios调用类方法
EN

Stack Overflow用户
提问于 2015-01-01 02:42:09
回答 1查看 360关注 0票数 1

所以我想了解一下JavascriptCore是如何工作的。

所以首先我尝试调用单个函数,但现在我尝试调用类中的函数。

我的javascript代码如下所示

代码语言:javascript
复制
var sayHelloAlfred = function()
{
    log("Hello Alfred");
}

var testClass = function()
{
    this.toto = function()
    {
        log("Toto in class");
    }
}

var testObject = {

    toto : function()
    {
        log("Toto in object");
    }

}

和我的ViewController代码:

代码语言:javascript
复制
- (void)viewDidLoad {
    [super viewDidLoad];

    _context = [[JSContext alloc] initWithVirtualMachine:[[JSVirtualMachine alloc] init]];

    _context[@"log"] = ^(NSString *text) {
        NSLog(@"%@", text);
    };

    NSString *scriptFilePath = [[NSBundle mainBundle] pathForResource:@"main" ofType:@"js"];
    NSString *scriptFileContents = [NSString stringWithContentsOfFile:scriptFilePath encoding:NSUTF8StringEncoding error:nil];
    [_context evaluateScript:scriptFileContents];
}

- (IBAction)doStuff:(id)sender
{
    [_context[@"sayHelloAlfred"] callWithArguments:@[]]; // Works
    [_context[@"testClass"] invokeMethod:@"toto" withArguments:@[]]; // Doesn't work
    [_context[@"testObject"] invokeMethod:@"toto" withArguments:@[]]; // Works
}

我的问题是,它可以完美地处理单个函数和对象中的一个函数,但不能在函数中使用此函数。

你知道这是JavaScriptCore的正确行为还是我做错了什么?

提前谢谢你!

EN

回答 1

Stack Overflow用户

发布于 2015-01-01 18:48:49

我意识到我做错了什么。

因为它是一个类,所以在调用它的方法之前,我首先需要创建一个对象。

这就是怎么做的:

代码语言:javascript
复制
JSValue* c = [_context[@"testClass"] constructWithArguments:@[]];
[c invokeMethod:@"toto" withArguments:@[]];
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27725078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档