//一个参数value static void JsPrintFn(struct JsEngine* e,void* data,struct JsValue* res){ struct JsValue v; struct JsContext* c = JsGetTlsContext(); if(c == NULL) return; //获得参数 JsFindValue(c,"value",&v); JsPrintValue(&v); }
void JsToObject(struct JsValue *val, struct JsValue *res){ struct JsValue *argv[1]; struct JsValue con0; struct JsValue *con; argv[0] = val; res->type = JS_OBJECT; switch (val->type) { case JS_UNDEFINED: case JS_NULL: JsThrowString("TypeError"); break; case JS_OBJECT: *res = *val; //直接返回, 不需要构建了 return; case JS_BOOLEAN: JsFindValue(NULL,"Boolean",&con0); break; case JS_NUMBER: JsFindValue(NULL,"Number",&con0); break; case JS_STRING: JsFindValue(NULL,"String",&con0); break; default: JsThrowString("JsToObjectError"); return; } //变换 con = &con0; if( con->type != JS_OBJECT || con->u.object == NULL || con->u.object->Construct == NULL){ JsPrintString("TypeError"); //JsThrowString("TypeError"); //直接中断程序 JsAssert(FALSE); return; } //构造 (*con->u.object->Construct)(con->u.object,JsGetVm()->Global, 1, argv, res); }