前言: chromium怎么用浏览器采用的是V8引擎解析javascript代码, V8引擎相对于传统的JS引擎效率上有很大的提高,主要是因为它将js代码直接编译成了目标机器代码. V8引擎的编译过程主要是 js代码->抽象代码樹->目标机器代码. 而传统的js编译过程是 js代码->抽象代码树->中间代码->解释执行. V8引擎在执行需要重复调用函数的js代码中效率有显著提升,但是在执行玳码量庞大,函数一般是单次调用的JS代码效率上却并不明显,原因是重复调用的函数只需要被编译成一次机器码就能重复执行,而传统的解释执荇方式却需要每次都去解释执行.
在做chromium怎么用浏览器定制化需求时常常需要扩展JS对象以增加js的功能. 在javascript这门编程语言的概念里,一切皆为对象,变量,函数等等一切皆为对象,没有类的概念,javascript是一门动态语言,它的主要特点是对象的类型和内容是在运行时决定的,是可以不断变化的. 在javascript的世界里,根对象是global对象,所有的一切对象皆为global的子孙对象.在浏览器中,这个global对象的表现为window对象. 在webkit中已实现的对象称为javascript内部对象,内部对象又分为本地对象囷内置对象. 本地对象需要由用户在js代码中使用new方法初化始对象之后才能使用,内置对象是在webkit中已初始化好了可以直接使用. 例如
现在要新增一個 本地js对象,对象名称为Test,它的构造方法是传入三个字符串参数,它有三个可读写字符串属性adress,mask,gateway,一个只读字符串属性value,一个方法为setValue.
类的实现代码如下所示:
在webkit中扩展js对象的方法比较简单,实现过程中出现出错一般也能通过参照原有的代码找到解决方法. 本文是对chorium浏览器如何扩展js对象作了大体概述,但是对于 python脚本如何解析.idl文件生成对应代码,v8引擎如何解析javascript代码这些内部原理本文未涉及.