set method
Implementation
void set(dynamic value, IOJsScript script) {
if (value == null) {
setNull();
} else if (value is int) {
setInt(value);
} else if (value is double) {
setDouble(value);
} else if (value is bool) {
setBool(value);
} else if (value is String) {
setString(value, script);
} else if (value is IOJsValue) {
setValue(value);
} else if (value is Future) {
setFuture(value, script);
} else if (value is JsProxy) {
setValue(value.value as IOJsValue);
} else if (value is Map || value is List) {
IOJsValue? val;
reverse(script, () {
JsValue obj = script.bind(value, classInfo: value is Map ? mapClass : listClass);
val = script.collectionWrap(obj) as IOJsValue;
});
setValue(val!);
} else if (value is Function) {
IOJsValue? val;
reverse(script, () {
val = script.function((argv) => Function.apply(value, argv)) as IOJsValue;
});
setValue(val!);
} else {
IOJsValue? val;
reverse(script, () {
var info = script._classIndex[value.runtimeType]?.clazz;
if (info == null) info = script._classList[0].clazz;
val = script.bind(value, classInfo: info) as IOJsValue;
});
setValue(val!);
}
}