2013-07-03 36 views
2

假設我想調用一些JavaScript函數。我應該將所需的資源文件(JavaScript文件)保存在應用程序文件夾中並鏈接。但是什麼是內置功能,如eval(),toString()是從哪裏產生的?特別是:如何在腳本標記中加載javascript函數

  1. 這些函數是否從JavaScript文件或任何其他機制中檢索?
  2. 如果是這樣,他們位於何處?
  3. 瀏覽器安裝的這些子部分?
+2

是的,他們是瀏覽器的一部分。 –

+0

儘管對於像我這樣有經驗的人來說,答案似乎很明顯,但我認爲這是一個很好的問題,+1 – user123444555621

+0

我希望你能給出反饋意見。不,這不是一個好問題。用戶理解*內置*函數是什麼,但不是關於它的其他任何內容?你是否在任何語言中對任何保留的*關鍵字*提出同樣的問題?詢問這些內置程序的範圍是一回事,但另一個問題是詢問它們的存儲位置。 HTML解釋器在哪裏? CSS解釋器在哪裏? 'mailto:'鏈接如何知道要打開哪個郵件客戶端? ---這些都是基本的雅虎/ Bing/Google可能回答的基本問題。 – vol7ron

回答

6

1.是否從js文件或其他機制檢索到這些函數?

不,內置函數是語言的一部分,最有可能用C或C++實現。 但是,因爲JavaScript是一個動態語言,內置函數可以重新定義在某處的JavaScript函數。例如:

String.prototype.substr = function() { return 'Take that, built-in function!'; }; 
var s = 'Hello'; 
window.alert(s.substr(1,2)); 

2.如果是他們位於何處?

查看答案1.但是,如果您對這些內置函數的實現感到好奇,那麼使用開源JavaScript引擎就可以在線挖掘源代碼。例如,V8(Chrome瀏覽器使用的JavaScript引擎)的源代碼可以在here找到。告訴

的一種方式,如果一個功能是本機將pop it up in an alert

window.alert(Math.floor); 

這會給你一個警告框,說是這樣的:

enter image description here

...指示代碼是原生的,不能將顯示爲作爲JavaScript。

3.是否安裝這些瀏覽器的子部分?

它們是隨瀏覽器一起提供的JavaScript安裝的一部分。不同的瀏覽器有不同的JavaScript引擎。

+0

是的同意。但是爲了獲取我們必須引用它們的功能。但在JavaScript中沒有引用任何東西 –

+0

@eraj - 正確。它們是內置的*,由ECMA標準定義。沒有必要引用任何東西。 –

+1

這與C這樣的語言不同,你必須顯式地[引用](http://stackoverflow.com/questions/6723266/why-to-include-stdlib-h)標準庫:'#include '。哦,男孩,這是多麼令人討厭。我愛JS! – user123444555621

0

瀏覽器實現一定的標準功能集以符合Ecma標準。 這意味着你可以相信,某些功能將開箱即用

+0

你的意思是Ecma,而不是emacs。 – user123444555621

+0

謝謝!更新 :-) – TGH

0

你有沒有在瀏覽器中使用JavaScript /禁用JavaScript,如果沒有去你的瀏覽器的設置,看到那裏,這意味着是該腳本出貨與瀏覽器。

javascript自帶所有瀏覽器支持Web UI和其他功能的交互性。

檢查此link的JavaScript引擎的一些比較

相關問題