invoke method
在全局对象上调用方法 (由具体实现决定如何处理)
Implementation
@override
dynamic invoke(String? objectName, String methodName, List<dynamic> args) {
if (objectName == null) {
return global.invoke(methodName, args);
}
// 优先从缓存获取对象,避免频繁的 FFI 调用和对象创建
JSObject? obj = _objectCache[objectName];
if (obj == null) {
final res = global.getProperty(objectName);
if (res is JSObject) {
obj = res;
_objectCache[objectName] = obj;
} else {
// 如果获取到的不是对象(可能是 null 或基础类型),则无法调用方法
// 注意:如果是基础类型,getProperty 内部已经释放了 JSValue
return null;
}
}
return obj.invoke(methodName, args);
}