2011-08-11 32 views
22

有什麼叫做「原生JavaScript」?我在工作描述中看到了這個詞,我將要面試。什麼是「原生JavaScript」?

通常的JavaScript和原生JavaScript相同嗎?

+0

可能,他們的意思是JavaScript的,而比JS庫,如jQuery,Dojo等等。 –

回答

26

術語「native」在JavaScript中被過度使用。

  • 通俗地說,它用在Johan的答案中:沒有JQuery,Moo,Dojo。

  • 與Java的JNI類似,Google的GWT和類似的I-compile-down-to-JavaScript將底層實現視爲本地的。

  • 原始在JS中使用native,我相信,指的是在ECMAScript中構建和定義的對象,而不是環境。作爲一種ECMAScript語言,JavaScript不是爲了自給自足;它嵌入在Web瀏覽器,Photoshop,Acroread等主機環境中。當您編寫Web客戶端程序時,您將使用諸如Math,Function,Array,Window,Button之類的對象。前三個是本地(獨立於主機環境),而最後兩個是非本地的(由主機環境提供)。這與cdhowie的答案相反,這是一個很好的答案BTW。不過很有意思!

我相信還有其他的解釋。我的猜測是,如果你在工作描述中看到這個,可能不是最後一個:這個定義太學術了。 :)

這裏是從ECMAScript的262標準,第五版的官方定義:

4.3.6 native object --- object in an ECMAScript implementation 
whose semantics are fully defined by this specification rather 
than by the host environment. NOTE Standard native objects are 
defined in this specification. Some native objects are built-in; 
others may be constructed during the course of execution of an 
ECMAScript program. 

換句話說,內置插件一樣MathObjectStringRegExp是本地人,因爲任何物體我使用對象文字或函數定義。但主機對象則相反。對不起漫步。

3

我相信本地JavaScript尊爲「香草」的JavaScript,所以沒有jQuery的,MooTools的,等只是普通的舊的JavaScript

0

這是相同的,或許只是想知道,如果你這樣做不僅僅是jayesh等。

0

我知道的術語「本地JavaScript」的唯一上下文涉及編寫JavaScript對象和/或由JavaScript提供者實現而不是用JavaScript本身編寫的函數。例如,您在window對象上調用的許多功能都由瀏覽器以其本機語言(C++ for Firefox/Mozilla等)實現。這可能是什麼意思...

它們也可能意味着香草/純粹的JavaScript(沒有像jQuery或原型框架)。考慮聯繫他們並要求澄清。

+0

這完全是錯誤的方式。本地對象是純JavaScript對象,而由環境提供的對象(例如,瀏覽器中的DOM節點)稱爲*主對象*。 –

0

不,對我而言,本地Javascript意味着第三方js函數可以執行常規js不能做的事情,有點像Java-JNI關係。 Google JNEXT和JSNI獲取更多信息。

同樣,我不知道問題的真實背景,如果我是你,我會要求澄清。

2

原生JavaScript是在瀏覽器中實現的JavaScript。

瀏覽器實現後面跟着ECMA標準和一些額外的方法。例如,如果您熟悉jQuery和希望通過ID

$('#myId') 

選擇元素本地JavaScript將是

document.getElementById('myId') 

現在,如果你需要做一些簡單的任務。您可能不會也不應該加載一個巨大的jQuery庫並執行其所有功能。而是10行本地JavaScript的會做的工作,而不是5行jQuery代碼

5

本地JS,我認爲,這是下面的例子:

$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$$_$+$._$+$.$$__+$._+"\\"+$.__$+$.$_$+$.$_$+$.$$$_+"\\"+$.__$+$.$_$+$.$$_+$.__+".\\"+$.__$+$.$$_+$.$$$+"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+$.__+$.$$$_+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+", \\"+$.__$+$.$$_+$.$$$+$._$+"\\"+$.__$+$.$$_+$._$_+(![]+"")[$._$_]+$.$$_$+"!\\\")\\"+$.$$$+$._$$+"\"")())(); 
+0

Wat ... Mind =吹。 – evolutionxbox

+0

...聖潔的狗屎! –

+0

它的作品如何? –

0

本地JavaScript是所有JavaScript代碼。沒有任何一種框架代碼。 它更快,並在瀏覽器中加載。 您可以使用簡單的瀏覽器任務,不需要任何數據庫接口,或任何後端大型計算工作。 使用框架會使代碼變大,導致瀏覽器變慢。

+1

你的答案似乎只能說明部分故事。本地(香草)JavaScript可以做*任何* JavaScript庫可以或反其道歉:一個庫不能做更多的本地代碼的能力。庫添加的主要內容是*抽象*,因此您可以通過更簡單易讀的代碼更輕鬆地完成一些操作。這實際上*可能以額外的計算和額外的字節爲代價。 – Timusan

4

不要的東西太多了更加複雜的@雷人的答案是正確的,但是對於構建移動應用的新JavaScript框架已經出現所謂的NativeScripthttps://www.nativescript.org/ 如果沒有足夠的混亂,這個框架可以讓你寫純粹的「香草」 JavaScript,但調用Native(iOS/Android/WindowsPhone)API。

這幾乎就像在設備上運行時編寫一個「Native」應用程序(認爲Objective-C/Java/C#),但使用單一語言(JavaScript)解釋爲

我懷疑,因爲這個庫的人氣增長「本地JavaScript」可以用作標籤來描述使用這個框架代碼(尤其是因爲這就是我得到了通過谷歌這個問題)

相關問題