javascriptcore

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值