webkit中的javascript(1)---javascript函数调用在webkit中的实现
来源:互联网 发布:淘宝新开网店怎么推广 编辑:程序博客网 时间:2024/03/28 19:34
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
- webkit中的javascript(1)---javascript函数调用在webkit中的实现
- webkit中的javascript(3)---javascript在webkit内部实现结构
- WebKit中的JavaScript Binding
- C++ webkit调用javascript
- JavaScript事件在WebKit中的处理流程研究
- Web Worker在WebKit中的实现机制
- webkit中的javascript(2)----javascript的prototype 和 constructor
- webkit中的javascript(4)---javascript执行的入口
- JavaScript中的函数调用
- Local Storage 分析及在Webkit中的实现
- Local Storage 分析及在Webkit中的实现
- extend webkit javaScript objects
- WebKit -- qt javascript
- webkit 扩展 JavaScript 对象
- WebKit javascript扩展
- C++的RAII在WebKit中的应用
- popstate事件在webkit中的诡异行为
- popstate事件在webkit中的诡异行为
- 跟燕十八学习PHP-第六天-顺序&分支
- 我指间的刺青是对你的誓言
- html hr线的样式
- 检查ip地址和子网掩码的有效性
- Oracle中的Schema和User
- webkit中的javascript(1)---javascript函数调用在webkit中的实现
- java网网页返回图片的方法与说明
- 使用USB远程ssh登陆iOS设备,进行越狱开发
- 【PB】代码的发布及其安装程序的制作
- 为什么苹果公司不开放 iOS 输入法的 API?
- phpcms v9 list列表页调用文章详情内容
- 有高人遇到这样的提示没“Could not launch 'app name'”?
- NSCalibratedWhiteColorSpace颜色空间介绍
- 淡定人生,享受平静