为什么JavaScript有如此混乱的API?

为什么JavaScript有如此混乱的API?,javascript,Javascript,我想知道为什么JavaScript有如此混乱的API。它在不同的浏览器之间并不一致,从每种类型的表单输入中获取值的方法不同,而且错误是不可原谅的。jQuery改变了我的生活,因为它的API简单得多。为什么JavaScript的创建者一开始就没有这样设置API?我认为大部分都是浏览器战争的残余。Javascript有一段非常麻烦的历史,由微软和网景之间的一场全面战争构成,Sun也参与其中。Javascript实际上是一种非常好的语言。它有一些关键的设计错误,但你可以解决它们。至于API,您可以使用

我想知道为什么JavaScript有如此混乱的API。它在不同的浏览器之间并不一致,从每种类型的表单输入中获取值的方法不同,而且错误是不可原谅的。jQuery改变了我的生活,因为它的API简单得多。为什么JavaScript的创建者一开始就没有这样设置API?

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


如果可以的话,我有一个重要的建议。不要与之抗争,也不要试图把它伪装成别的东西。拥抱它,即使它有缺陷。一旦你认识了它们,你就不会再踩它们了,或者如果有什么可疑的东西,你会很容易发现问题。

我会咬。看看Douglas Crockford的视频(),他很好地解释了为什么一些JavaScript会出现这种情况。()

JavaScript API本身在浏览器之间是一致的(由ECMA定义,尽管最初由Netscape开发)。浏览器之间的区别在于文档对象模型(DOM)。DOM是由不同的浏览器独立开发的,最初是IE和Netscape,但现在是IE、Mozilla和其他浏览器。W3C已经加入进来,试图整合这些差异并创建一个共同的标准。对于向后兼容性,旧的差异仍然存在。而且,是的,jQuery在使DOM更容易方面已经走了很长的路。

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

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

不幸的是,有些部分没有得到很好的指定,有些部分没有被浏览器供应商很好地实现。此外,供应商使用专有扩展扩展扩展此API,这些扩展可能永远不会添加到标准中,但非常流行(如document.all)


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

这并不能直接回答您的问题,但是:


很多人都被浏览器之间的不一致性所困扰。虽然有一些人真的很擅长消除自己JavaScript代码中的差异,但大多数人都抽不出时间。这就是为什么有如此丰富的框架可以为您做这些肮脏的工作。是其中最受欢迎的一种,我想,我会推荐它给你,作为你头痛时吞下大量阿司匹林的替代品。

因为它是由一家公司(Netscape)创建的,并被他们最大的竞争对手(Microsoft)严重复制直到现在对不同的变体做任何事情都为时已晚,才将其标准化。我不同意结束这个问题。它与编程相关且合法。我不确定JS比浏览器的DOM更应该受到谴责。JS是一种有点奇怪的语言(C和Lisp的邪恶结合),但它绝对没有不一致的API。@Mauricio,浏览器战争发生在90年代初/中期。1990年出生的人现在将近20岁。有些人进入这个行业时还太年轻,没有经历过浏览器战争,也没有经历过网景与微软的直接竞争。你害怕了吗?