2011-02-27 14 views
3

我只是想知道爲什麼像String.contains()這樣的瑣碎功能不是JavaScript核心本身的一部分。我的意思是,雖然JavaScript核心包含了創建基於核心功能的新功能所必需的所有功能,但默認情況下一些明顯的功能是不可用的。爲什麼不是本地構建的類似框架的函數?

There are有一些很好的框架,基本上擴展了JavaScript內核,但我不明白爲什麼它們不是以本地方式構建的。

此外,例如,jQuery ajax()函數比本機對象更易於開發人員訪問。對於像這樣的東西使用框架幾乎是必不可少的。

那麼爲什麼這些功能在JavaScript核心本身中不可用?

回答

4

有一些偉大的框架出來 有基本上擴展 JavaScript的核心,但我只是不明白 爲什麼他們沒有在本地建。

我認爲任何人都沒有先見之明,想提前10-15年來看看技術的實施將如何發揮,哪些瀏覽器支持部分目前標準化的規範創建這些實用功能的時間,我們發現這些功能在2011年非常有用。

Javascript由Eich創建於1995年,景觀差異很大。當時並不存在「Ajax」,那麼人們會怎麼想呢?15-16年後,我們需要一些跨瀏覽器的Ajax功能?微軟在1996年推出了iframe,並在1999年推出了XMLHttp(Ajax)。

如果你是1995年的Brendan Eich,並且想到瀏覽器的功能以及Internet不像現在這樣流行,缺乏標準化 - 你會想到這些嗎?其中很多,如「Ajax」,甚至不存在?

就語言的變化而言,我想說的原因主要是因爲IE版本之間存在大量時間,特別是IE6與IE7相距5-6年,而IE7仍然有ECMA- 262,CSS1/CSS2錯誤,如果它們很慢採用多年前發佈的規範,它將如何支持更新的Javascript功能。

這是在另一個答案中提到的,但Javascript只是原始Javascript ECMAScript的超集。 ECMAScript是構建Actionscript和Javascript及其他語言的核心,並不包含DOM或像XMLHttpRequest這樣的方法。瀏覽器將腳本語言與渲染引擎/ DOM綁定,並將瀏覽器方法提供給環境。

+0

我同意你的看法 - 但語言本來可能會隨着時間的推移而稍微改變,以至於我認爲今天的情況如何。 – pimvdb

+1

@pimvdb它*可以*,但這可能會破壞現有網站的負載,並且意味着將有一段時間,舊的瀏覽器不支持新功能,因此無法可靠地使用它們。 – Justin

1

與所有爲什麼X語言沒有Y功能?問題的答案是:

因爲原始語言作者沒有包括它。

爲什麼?我猜只有他們知道。

+0

我明白你的意思,但JavaScript是一個非常使用的語言,這意味着它的核心會隨着時間的推移而改變。 – pimvdb

+1

@pimvdb:使用多種運行時實現(不同瀏覽器)的非常多的語言。由於增加的功能很好,在這種情況下,它要困難得多。 –

+0

你是對的,框架實際上是JavaScript中最簡單的解決方案。我只是想知道爲什麼它本身不可用,但我現在明白爲什麼,謝謝。 – pimvdb

1

我認爲重要的是要注意,JavaScript,也就是ECMAScript,不一定意味着是瀏覽器語言。它的目標是可以在任何程序中使用的嵌入式語言。諸如XMLHttpRequest之類的東西並不是語言的一部分,它們只是由瀏覽器提供的,這是使語言真正實現[/ i]的一種方式,因爲純粹的JavaScript沒有內置的操作來與任何東西進行交互。

至於字符串,我不知道爲什麼如此多的字符串操作被排除在語言之外。例如,爲什麼沒有修剪功能?誰知道。

+0

我不知道 - 據我所知,JavaScript幾乎只在網上使用。無論如何,*有* trim()'函數本身內置到(至少Chrome的)JavaScript中。 – pimvdb

+0

@pimvdb真的嗎?那很好。 Chrome都添加了它,或者它是新ECMAScript的一部分。我查看了String中缺少的內容已經有一段時間了。 – Bob

相關問題