1.如何抓包:
tcpdump -s 0 -w test.pcp 'tcp port 80 and (((ip[2:2] -
((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) !=
0)'
-s 0
:抓完整的包
-w:名字
2.
idl檔案是什嗎?
是需要暴露給JS解析引擎的介面。
W3C—WEB IDL
由該工作草案定義的介面定義語言(interface definition language)叫作Web
IDL,它可被用來描述要在Web瀏覽器裡實現的介面。Web
IDL是一種IDL的變體,它所具有的很多特性使之能夠更容易地對Web平台裡的常用指令碼對象的行為進行規定。為了支援過去只能以文字描述的常用功能,該
IDL在很多方面得到了擴充。另外,它還為ECMAScript第3版和Java給出了精確的語言綁定。
3. BatchedAttribute和BatchedCallback分別是JS所能調用的屬性和所使用的方法
4.JS的屬性和方法註冊到Context流程
ScriptController::executeScript
ScriptController::evaluate
v8::Handle v8Context = V8Proxy::mainWorldContext(m_proxy->frame());
proxy->mainWorldContext();
V8DOMWindowShell::initContextIfNeeded
V8DOMWindowShell::createNewContext
V8DOMWindow::GetShadowObjectTemplate
static v8::Persistent ConfigureShadowObjectTemplate
void batchConfigureAttributes
void configureAttribute
(attribute.onProto ? proto : instance)->SetAccessor(...)
5. webkit分為webcore和javascriptcore,v8屬於其中的javascriptcore,google是沒有用webkit的javascriptcore的,但是用了webcore.
所以android的webkit代碼裡有2個javascriptcore,v8和js。android是使用了自己的v8代替原來js。
6. 初步對比JavaScriptCore、V8、SpiderMonkey等
具體JavaScriptCore、V8、SpiderMonkey、TracMonkey執行效率對比如何,不同的測試方法會有不同的測試結果,在這裡不再闡述。
就個人瞭解而言,覺得JavaScriptCore關於對象的方法、屬性的安全存取控制方面略有欠缺;SpiderMonkey作為最早一批實現Javascript的引擎,其代碼使用C語言來實現,稍現複雜,沒有象後來的實現如JavaScriptCore、V8等借鑒了最新的虛擬機器技術如JVM等;V8作為新近推出的Javascript實現,正與其特點所描述,擁有很多優勢,同時基於C++實現,充分利用了C++ template,代碼相對簡潔,便於學習使用;