1.JSClassDefinition 中的className,在javascript中相当于?
function className()
{
}
把JSObjectRef object转为string时,打印出[object className]
2.JSClassDefinition 中的staticFunctions
static JSStaticFunction jsBaseTvFunctions[]
{
{"setSource",JSBaseTv::setSource,kJSPropertyAttributeNone},
{0,0,0}
}
在javascript中相当于?
function className()
{
this.setSource=function()
{
}
}
3JSObjectRef globalObject = JSContextGetGlobalObject(globalContext);
JSObjectRef windowObj = JSObjectMake(globalContext,windowClassRef,NULL);
JSStringRef windowObjName = JSStringCreateWithUTF8CString("custom");
JSObjectSetProperty(globalContext,globalObject,windowObjName,windowObj,kJSPropertyAttributeNone,0);
custom实际上就是JSClassDefinition的实例化,放在javascript中,它相当的作用:
custom= new JSClassDefinition();
这个参数propertyName和className有什么区别?
现在全局变量custom对HTML里的javascript是可见的,你可以直接以名字custom或者window[“custom”]来使用
3./* Creating values */
JSValueRef JSValueMakeUndefined(JSContextRef ctx);
JSValueRef JSValueMakeNull(JSContextRef ctx);
JSValueRef JSValueMakeString(JSContextRef ctx, JSStringRef string);
JSValueRef JSValueMakeNumber(JSContextRef ctx, double number);
JSObjectRef JSObjectMakeArray(JSContextRef ctx, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception);
JSObjectRef JSObjectMake(JSContextRef ctx, JSClassRef jsClass, void* privateData);
4./* Converting to JSStringRef */
JSStringRef JSValueToStringCopy(JSContextRef ctx, JSValueRef value, JSValueRef* exception);
size_t JSStringGetUTF8CString(JSStringRef string, char* buffer, size_t bufferSize);
/*private data*/
JSObjectRef JSObjectMake(JSContextRef ctx, JSClassRef jsClass, void* data);
void* JSObjectGetPrivate(JSObjectRef object);
/*内存回收*/
JavascriptCore的GC(Garbage Collection)会负责回收你创建的对象,GC会监视任何由JSValueMakeNumber,JSValueMakeString, JSObjectMake返回的结果,如果不用的时候GC会回收它,有几种情况例外:
JSStringCreateWithUTF8CString, JSStringCreateWithCFString需要用JSStringRelease释放;
JSObjectCopyPropertyNames(一个对象属性数组)需要用JSPropertyNameArrayRelease释放;
JSCreateClass需要JSClassRelease释放;
JSGlobalContextCreate创建的Javascript context需要用JSGlobalContextRelease释放.
这与objective-c的规则类似:create或copy的都要主动释放。
如果不想GC回收一个对象,可以使用函数JSValueProtect(JSContextRefctx, JSValueRef value)保护value不被GC回收,函数JSValueUnProtect释放保护,GC就可以回收value了,JSValueProtect与JSValueUnProtect调用的次数必需相等。
4.可以把<script>块中的内容先执行一遍,以后执行时不带上全块js内容,这样就保留了全局变量值了。
对于一些内部函数,jscore会自己处理。
其它c函数
strcmp