现在的位置: 首页 > 综合 > 正文

javascriptcore

2013年09月05日 ⁄ 综合 ⁄ 共 2236字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.