Esempio n. 1
0
//一个参数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);
}
Esempio n. 2
0
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);
}