Javascript练习环境

在工作中,我们使用Javascript基本上是在浏览器这个环境里面。可是无论是Firefox + Firebug,还是Safari的Javascript调试环境,对于学习Javascript和练习Javascript都不甚方便。其实,我们完全可以像Python或者Ruby那样学习Javascript。

 

首先,安装Javascript的解析器。自从Google推出V8 Javascript引擎之后,Javascript引擎便成为浏览器厂家比拼的重要战场。但世界上,Mozilla的Javascript解析器(C版本和Java版本的)很早就公布在其网站上面,只是我们很少使用罢了。我们这里选用V8引擎作为Javascript引擎。(以下以MacOS为例,Linux/Windows可以借鉴)

 

1.  安装scons

scons是一个用python写的替代Make和Makefile的build工具。功能肯定强于Make(大胆猜测也强于Ant和Maven,因为它的执行程序,配置文件都是Python的)。安装最新版本就好了。这里有个前提条件,必须使用Python2.5以上版本。

 

2.  从svn上check out V8引擎源代码

svn checkout http://v8.googlecode.com/svn/trunk/ v8

 

3.  进入源代码目录,运行以下命令:

scons sample=shell

确保安装的scons在PATH里面。

build完成后,能看到两个重要的文件:libv8.a和shell。我建议可以mv shell v8。这个v8就是Javascript解析器。

你可以运行v8 或者v8 <javascript file>。

 

4.  尝试修改少量的代码

浏览器的Javascript是不能print的,你看结果一般使用alert或者firebug的console.log。但是一般独立的Javascript(如V8,或者Mozilla的Javascript引擎)都能使用print察看结果。可是我们发现在v8里面打印array结果不是很友好:

譬如:

var arr = [1,2,3];

print(arr);

输出是:1,2,3而不是[1,2,3]。

我们可以修改源代码,让输出更友好一些。修改src/array.js

/**
 *  @author AnkyHe 
 *  Use [ ] to enclose array output
 *  Example:
 *    var arr = [1,2,3];
 *    print(arr);
 *      --> 1,2,3 // current
 *      --> [1,2,3] // revised
 */
function ArrayToString() {
  if (!IS_ARRAY(this)) {
    throw new $TypeError('Array.prototype.toString is not generic');
  }
  return "[" + Join(this, this.length, ',', ConvertToString) + "]"; 
}

/**
 *  @author AnkyHe
 *  Use [ ] to enclose array output
 *  Example:
 *    var arr = [1,2,3];
 *    print(arr);
 *      --> 1,2,3 // current
 *      --> [1,2,3] // revised
 */
function ArrayToLocaleString() {
  if (!IS_ARRAY(this)) {
    throw new $TypeError('Array.prototype.toString is not generic');
  }
  return "[" + Join(this, this.length, ',', ConvertToLocaleString) + "]";
}

 然后重新到v8目录scons一下就OK了。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值