为什么JavaScript有这么令人困惑的API?

时间:2010-01-08 13:02:56

标签: javascript

我想知道为什么JavaScript有这么令人困惑的API。它在浏览器之间并不一致,从每种类型的表单输入中获取值有不同的方法,并且它对错误是无法容忍的。 jQuery改变了我的生活,因为它的API非常简单。为什么JavaScript的创建者没有像那样设置API?

5 个答案:

答案 0 :(得分:12)

JavaScript API本身在浏览器之间是一致的(并且由ECMA定义,尽管最初是由Netscape开发的)。浏览器之间的区别是文档对象模型(DOM)。 DOM是由不同的浏览器独立开发的,最初是IE和Netscape,但现在是IE,Mozilla等。 W3C已加入尝试巩固差异并创建共同标准。为了向后兼容,旧的差异仍然存在。而且,是的,jQuery在使DOM变得更容易方面走了很长的路。

答案 1 :(得分:6)

Javascript的创建者没有设置API,因为Javascript是一种语言,而不是API。

您所引用的是文档对象模型(DOM),它是文档操作API。它是W3C指定的标准,其行为应该在浏览器中保持一致。

不幸的是,有些部分指定不当,浏览器供应商严重执行了其他一些部分。此外,供应商使用专有扩展来扩展此API,这些扩展可能永远不会添加到标准中,但非常受欢迎(如当时的document.all)。

这就是为什么今天浏览器中的API如此不一致。

答案 2 :(得分:1)

我认为大部分都是浏览器大战的残余。 Javascript有一个非常麻烦的历史,由微软和网景之间的全面战争组成,Sun也参与其中。 Javascript实际上是一种非常好的语言。它有一些关键的设计错误,但你可以解决它们。对于API,您可以使用一个好的包装库来隐藏所有复杂性并使用最合适的API。

一个重要的建议,如果可以的话。不要打它,也不要试图掩盖它作为别的东西。即使有缺陷也要拥抱它。一旦你了解它们,就不会再踩到它们了,或者如果有些东西可疑,你就会轻易找到问题。

答案 3 :(得分:1)

我会咬人的。看看道格拉斯·克罗克福德的视频(http://javascript.crockford.com/),他很好地解释了为什么一些JavaScript处于它所处的状态。(http://yuiblog.com/blog/2007/01/24/video-crockford-tjpl/

答案 4 :(得分:1)

这不直接回答你的问题,但是:

许多人都被浏览器之间的不一致所困扰。虽然有些人真的很擅长解决他们自己的JavaScript代码中的差异,但大多数人都不能浪费时间。这就是为什么有这么多的框架可以为你做脏工作。我认为JQuery是其中最受欢迎的,我会建议您作为替代品,为您的头痛吞下大量的阿司匹林。