Dom对象扩展和JSC内置对象
来源:互联网 发布:大数据基础设施服务商 编辑:程序博客网 时间:2024/05/15 23:43
通过JavaScript Binding添加新DOM对象的三种方式及实作
http://blog.csdn.net/horkychen/article/details/7640052
DOM对象有三种型态:
a. 寄生于现有对象,单实例。
从属于某个全局对象,访问时透过宿主对象完成。如document.object或window.object, 也可以直接调用object.method.这个实现最为简单,按需分配,并且随着宿主对象释放就可以了。主要参考window的Navigator实现。
b. 和window、document一样成为全局对象,单实例。
这个实现最为复杂,且还没有看到相关文档说明。关键要将对象在合适的位置创建,并更新到JSC的堆中才能达到功能。可以参考document的实现,并且需要考虑执行流程,必须对代码做过一些了解,才可能知道相关的改动量。
c. 多实例对象。可以在脚本中使用new创建。
为JavascriptCore添加自定义对象: http://www.cnblogs.com/baizx/archive/2010/08/17/1801662.html
只需在GlobalObject的构造函数添加一行:
putDirect(Identifier(globalExec(), "MyMath"), new (globalExec()) MyMathObject(globalExec(), MyMathObject::createStructure(d()->objectPrototype)), DontEnum | DontDelete);
就可以直接访问MyMath全局变量了,思路非常简单,就是要添加一个属性到全局访问空间,第一参数是名字,第二个参数是创建的对象。
所有的属性都必须是JSObject的实例,因此MyMathObject实际上继承与JSObject。
这时只是添加了一个MyMath变量,但是MyMathObject的定义并不知道,要添加自定义的功能就必须完善这个MyMathObject类
如何使用javascriptcore这个js引擎,例如如何向js引擎注入对象和函数,可以参考javascript\API\test下面的testapi.c和testapi.js文件。
注意对于js引擎而言,根本不存在window这个对象,window对象是DOM模型里面定义的对象,这个对象是浏览器引擎(webcore)向js引擎(javascriptcore)注入的,请参考WEBKITIDL。
添加运行时的js 自定义对象:在WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld接口中通过学习testapi.c来调用JSC api添加
- Dom对象扩展和JSC内置对象
- DOM对象和内置对象
- DOM对象和内置对象(上)
- DOM对象和内置对象(中)
- JavaScript之DOM对象和内置对象
- 内置对象 DOM BOM
- day05HTML DOM内置对象
- 扩展javascript内置对象
- JavaScript学习笔记(3)DOM对象和内置对象
- JavaScript DOM 中的内置对象
- javascript基础部分(四)DOM和内置对象
- ES6--内置对象的扩展
- 包装对象和内置对象
- JSP内置对象和EL内置对象
- XMLHttpRequest对象和DOM对象
- XMLHttpRequest对象和DOM对象
- XMLHttpRequest对象和DOM对象
- jQuery对象和DOM对象
- matlab字符串处理
- nginx 小记
- 十四、ContentProvider往通讯录添加联系人和获取联系人
- hadoop 把text 文件转成 Hfile 文件
- Oracle access MySql via unixODBC by DBLINK
- Dom对象扩展和JSC内置对象
- FFMPEG解码流程(转)
- lightbox——下载路径
- QT学习笔记——如何调用父类的构造函数
- fetion-robot是基于web飞信接口的飞信机器人
- jetspeed
- SQL--锁
- 整理:iOS 短信与电话事件的获取
- 自己动手写web服务器之虚拟端口支持