我想在 JavaScript/JScript/ECMAScript 中构建一个库......无论你想怎么称呼它,它都将针对现代标准(HTML5、CSS3、ESv5),考虑到任何支持该标准的浏览器!现在我知道已经有很多有用的库了,例如 jQuery 和 MooTools。当然它们很棒,而且我已经在必要时使用了它们,但我不应该仅仅因为它很受欢迎就被迫和其他开发者一样赶上潮流!
所以为了下面的问题,让我们不要关心第三方库,比如 jQuery 和 MooTools。让我们深入了解 JavaScript/JScript/ECMAScript。
首先,我在此之前问了一个问题(JavaScript、JScript 和 ECMAScript 之间有什么区别?),因为我不知道有什么区别。
谢天谢地,我得出以下结论:
ECMAScript 是语言规范。JavaScript 和 JScript 是 ECMAScript 的方言。
JavaScript 是 Mozilla 的 ECMAScript 实现。
JScript 是 Microsoft 的 ECMAScript 实现。
好的,这是一个很好的简单答案,不是吗?但这里有一些问题源于此:
- 非 Mozilla 浏览器是否支持“JavaScript”,支持到什么程度?
- 非微软浏览器是否支持“JScript”,支持到什么程度?
基于这两个问题,我做了一点挖掘,在 IE9、FF14 和 GC19 上做了一个简单的测试。
这是测试代码:
<!DOCTYPE html>
<html>
<head>
<title>HTML 5 Template</title>
<script language="JavaScript1.3">
jsver = "1.3";
</script>
<script language="JavaScript1.4">
jsver = "1.4";
</script>
<script language="JavaScript1.5">
jsver = "1.5";
</script>
<script language="JavaScript1.6">
jsver = "1.6";
</script>
<script language="JavaScript1.7">
jsver = "1.7";
</script>
<script language="JavaScript1.8">
jsver = "1.8";
</script>
<script type="text/javascript">
document.write("<B>Your browser supports JavaScript version " + jsver + ".</B>")
</script>
</head>
<body>
</body>
</html>
结果是:IE9 = JSv1.3,FF14 = JSv1.8,GC19 = JSv1.7
好的,然后我运行了这个测试,测试 ECMAScript 版本 5 支持: http: //kangax.github.com/es5-compat-table/#showold
再次使用相同的浏览器(IE9、FF14、GC19),ESv5 似乎得到了很好的支持!
现在是棘手的一点!我来自微软背景,使用 C#、ASP.NET 等语言编写软件,所以很自然地,我选择的 IDE 是 Visual Studio(目前是 2010 年)。当我查看 JavaScript 智能感知时,我看到了诸如 ActiveXObject、Array、Object 等的东西。
- 我应该相信 VS2010 的智能感知吗?
- 我在哪里可以找到 ESv5 支持的对象和功能的参考?
- 如何检测浏览器是否支持特定对象或功能?
- 有没有比 VS2010 更好的东西可以帮助我编写兼容的 ESv5 代码?
- 覆盖现有对象(如 Object、Number、Boolean 等)的实现是否安全,还是应该扩展现有实现?
最后,关于我自己与 jQuery。假设我懒得自己编写核心合规性和功能,我可以写我的库来坐在 jQuery 之上……或者这只是一个逃避?