webkit中的javascript(1)---javascript函数调用在webkit中的实现
2012-09-24 18:37
351 查看
javascript函数调用如何实现的?
#########################################################################################
by zevolo
JS 的object有三种,Javascript的内部对象,browser的对象,html dom的对象。js object有很多属性和方法,webkit支持绝大多数,只有极少没有支持,并且扩充了额外的属性和方法。
其中Javascript的内部对象在Source/JavascriptCore/runtime中实现。对于一种对象,一般有三个对象和其他的辅助对象来实现,如Number,有object, prototype, 和constructor,其中prototype的父类是object(这部分代码还不是很一致,object的名字不一样,如NumberObject,DateInstance,JSArray等,但都是这种结构,也许webkit以后会调整)
对象的属性在constructor中定义,而方法在prototype中定义
Browser和html的对象在DeriveSources/WebCore中定义,一般也有prototype和constructor(有的没有)
在DeriveSources的javascript对象,webkit通过idl生成具体的js的对象bindings,如js的Window对象通过Window.idl生成JSDOMWindow来实现,
其中JSDOMWindowTableValues定义了属性,JSDOMWindowPrototypeTableValues定义了方法
#########################################################################################
javascript的window::setInterval的内部实现
调用序列图如下:
javascript的setInterval
-->jsDOMWindowPrototypeFunctionSetInterval
-->JSDOMWindow::setInterval
-->DOMWindow::setInterval
-->DOMTimer::install(context, action, timeout, false);
#########################################################################################
附
WebCore的timer实现
最基本有几个类,
--TimerBase
--ThreadTimers
包含TimerBase的heap堆和SharedTimer的指针
--SharedTimer
--TimerBase有一些子类,如-->SuspendableTimer-->DOMTimer, Timer等
setNextFireTime() timer开始的时候,都要调用这个函数,这里把具体的timer更新或者插入到ThreadTimers的堆中
fired() 纯虚函数
--ThreadTimers
updateSharedTimer() start timer
sharedTimerFired() fired函数,设置为内部的SharedTimer的callback函数
--SharedTimer
实现依赖具体的平台,如mac, gtk, qt等
有两个具体的实现MainThreadSharedTimer和WorkerSharedTimer
#########################################################################################
by zevolo
JS 的object有三种,Javascript的内部对象,browser的对象,html dom的对象。js object有很多属性和方法,webkit支持绝大多数,只有极少没有支持,并且扩充了额外的属性和方法。
其中Javascript的内部对象在Source/JavascriptCore/runtime中实现。对于一种对象,一般有三个对象和其他的辅助对象来实现,如Number,有object, prototype, 和constructor,其中prototype的父类是object(这部分代码还不是很一致,object的名字不一样,如NumberObject,DateInstance,JSArray等,但都是这种结构,也许webkit以后会调整)
对象的属性在constructor中定义,而方法在prototype中定义
Browser和html的对象在DeriveSources/WebCore中定义,一般也有prototype和constructor(有的没有)
在DeriveSources的javascript对象,webkit通过idl生成具体的js的对象bindings,如js的Window对象通过Window.idl生成JSDOMWindow来实现,
其中JSDOMWindowTableValues定义了属性,JSDOMWindowPrototypeTableValues定义了方法
#########################################################################################
javascript的window::setInterval的内部实现
调用序列图如下:
javascript的setInterval
-->jsDOMWindowPrototypeFunctionSetInterval
-->JSDOMWindow::setInterval
-->DOMWindow::setInterval
-->DOMTimer::install(context, action, timeout, false);
#########################################################################################
附
WebCore的timer实现
最基本有几个类,
--TimerBase
--ThreadTimers
包含TimerBase的heap堆和SharedTimer的指针
--SharedTimer
--TimerBase有一些子类,如-->SuspendableTimer-->DOMTimer, Timer等
setNextFireTime() timer开始的时候,都要调用这个函数,这里把具体的timer更新或者插入到ThreadTimers的堆中
fired() 纯虚函数
--ThreadTimers
updateSharedTimer() start timer
sharedTimerFired() fired函数,设置为内部的SharedTimer的callback函数
--SharedTimer
实现依赖具体的平台,如mac, gtk, qt等
有两个具体的实现MainThreadSharedTimer和WorkerSharedTimer
相关文章推荐
- 不用前台ajax,实现javascript调用后台c#
- JsBridge实现Javascript和Java的互相调用
- javascript中用函数属性实现函数调用计数
- java通过javascript引擎调用javascript数学函数实现计算
- java解析javascript方法,scriptengine初体验,实现后台调用js方法验证。
- Qt webKit--实现本地QObject(c++)和JavaScript交互
- javascript 实现ajax调用,重点是纯的js实现
- 关于ASP.NET调用JavaScript的实现
- JavaScriptCore, WebKit的JS实现简介
- 关于ASP.NET调用JavaScript的实现
- javascript实现方法调用与方法触发小结
- 怎样在前端Javascript中调用C#方法(1)简单实现(附源码)
- WebView和JavaScript如何实现相互调用
- 简谈 JavaScript、Java 中链式方法调用大致实现原理
- JavaScript调用Web Services实现无刷新三联动
- android中实现JavaScript与Java之间实现互相调用
- JavaScript实现显示函数调用堆栈的方法
- 利用ScriptManager实现Javascript调用WebService中的方法
- Chromium实现供JavaScript调用方法
- Form中程序和其webBrower页面中的JavaScript方法相互调用的实现