我只是想知道为什么像String.contains()
这样的琐碎函数不属于JavaScript核心本身。我的意思是,尽管JavaScript核心包含了基于核心功能创建新功能所需的所有功能,但默认情况下,某些明显的功能不可用。
那里有 一些很棒的框架,基本上扩展了JavaScript核心,但我不明白为什么它们不是本地构建的。
此外,例如,jQuery ajax()
函数比原生XMLHttpRequest
对象更加开发人员友好。对于像这样的事情,使用框架几乎是必不可少的。
那么为什么这些函数在JavaScript核心本身不可用?
答案 0 :(得分:4)
有一些很棒的框架 那里基本上延伸了 JavaScript核心,但我只是不明白 为什么它们不是原生的。
我认为没有人有先见之明提前10至15年思考并看看技术的实施将如何发挥作用,哪些浏览器将支持当前标准化的部分规范创建我们认为在2011年有用的这些实用功能。
Javascript于1995年由Eich创建,其风景大不相同。 “Ajax”当时并不存在,那么有人会怎么想15-16年后我们需要一些跨浏览器的Ajax功能呢? Microsoft于1996年推出了iframe,并于1999年推出了XMLHttp(Ajax)。
如果你是1995年的Brendan Eich,并考虑浏览器的功能以及互联网不像现在这样流行的事实,并且缺乏标准化 - 你会想到这些东西吗?其中许多,例如“Ajax”,甚至都不存在?
就语言的变化而言,我说的原因主要是因为IE版本之间存在大量时间,特别是IE6到IE7,相隔5 - 6年,IE7仍然有ECMA-262 ,CSS1 / CSS2错误,如果他们采用多年前发布的规范这么慢,它怎么可能支持更新的Javascript功能。
这在另一个答案中提到过,但Javascript只是原始Javascript ECMAScript的超集。 ECMAScript是构建ActionScript和Javascript以及其他语言的核心,它不包含DOM或XMLHttpRequest之类的方法。浏览器将脚本语言与渲染引擎/ DOM绑定,并将浏览器方法提供给环境。
答案 1 :(得分:1)
与所有一样,为什么X语言没有Y功能?问题的答案是:
因为原始语言作者没有包含它。
为什么到底?我想只有他们知道。
答案 2 :(得分:1)
我认为重要的是要注意JavaScript,即ECMAScript,并不一定是浏览器语言。它的目的是可以在任何程序中使用的可嵌入语言。像XMLHttpRequest
这样的东西不是语言的一部分,它们只是由浏览器提供,作为实现[i]做[/ i]某事的一种方式,因为纯JavaScript没有内置操作与任何事物互动。
至于String,我不确定为什么这么多String操作被排除在语言之外。例如,为什么没有Trim功能呢?谁知道呢。