【发布时间】:2011-08-11 06:59:29
【问题描述】:
有什么叫做“原生 JavaScript”的东西吗?我在将要面试的职位描述中看到了这个词。
普通的 JavaScript 和 Native JavaScript 一样吗?
【问题讨论】:
-
可能是指 JavaScript,而不是 jQuery、Dojo 等 JS 库。
标签: javascript
有什么叫做“原生 JavaScript”的东西吗?我在将要面试的职位描述中看到了这个词。
普通的 JavaScript 和 Native JavaScript 一样吗?
【问题讨论】:
标签: javascript
“原生”一词在 JavaScript 中被过度使用。
通俗地说,它就像 Johan 的回答一样:没有 JQuery、Moo、Dojo。
类似于 JNI for Java、Google 的 GWT 和类似的 I-compile-down-to-JavaScript 将底层实现称为原生。
我认为,在 JS 中 original 使用 native 是指在 ECMAScript 中构建和定义的对象,而不是环境。 JavaScript 作为一种 ECMAScript 语言,并非旨在自给自足。它嵌入在主机环境中,例如 Web 浏览器、Photoshop、Acroread 等。当您编写 Web 客户端程序时,您将使用诸如 Math、Function、Array、Window 和Button。前三个是native(独立于宿主环境),而后两个是非原生的(由宿主环境提供)。这与cdhowie的答案相反,顺便说一句,这是一个很好的答案。不过很有趣!
我相信还有其他解释。我的猜测是,如果你在职位描述中看到这一点,它可能不是最后一个:这个定义太学术了。 :)
这是来自 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.
换句话说,像Math、Object、String、RegExp 这样的内置函数是原生的,就像我使用对象文字或函数定义创建的任何对象一样。但是 宿主对象 是相反的。抱歉打扰了。
【讨论】:
Native JS,我想是下面的例子:
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:
({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:
++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=
($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+
((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+
($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+
(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];
$.$($.$($.$$+"\""+$.$$_$+$._$+$.$$__+$._+"\\"+$.__$+$.$_$+$.$_$+
$.$$$_+"\\"+$.__$+$.$_$+$.$$_+$.__+".\\"+$.__$+$.$$_+$.$$$+
"\\"+$.__$+$.$$_+$._$_+"\\"+$.__$+$.$_$+$.__$+$.__+$.$$$_+
"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+
$._$+", \\"+$.__$+$.$$_+$.$$$+$._$+"\\"+$.__$+$.$$_+$._$_+
(![]+"")[$._$_]+$.$$_$+"!\\\")\\"+$.$$$+$._$$+"\"")())();
【讨论】:
Native JavaScript 是在浏览器中实现的 JavaScript。
浏览器实现遵循 ECMA 标准和一些额外的方法。例如,如果您熟悉 jQuery,并希望通过 ID 选择元素
$('#myId')
原生 JavaScript 将是
document.getElementById('myId')
现在,如果您需要执行一些简单的任务。您可能不会或不应该加载庞大的 jQuery 库并执行其所有功能。只需 10 行原生 Javascript 而不是 5 行 jQuery 代码即可完成这项工作
【讨论】:
我相信原生 Javascript 崇尚“香草”javascript,所以没有 jQuery、MooTools 等。只是普通的旧 javascript
【讨论】:
因为@Ray 的回答是正确的,所以不要让事情变得太复杂,但是已经出现了一个用于构建移动应用程序的新 JavaScript 框架,称为 NativeScript https://www.nativescript.org/ 如果还不够混乱,这个框架允许您编写纯“香草”JavaScript,但调用本机 (iOS/Android/WindowsPhone) API。
这几乎就像编写一个“原生”应用程序(想想 Objective-C/Java/C#),但使用的是在设备上运行时解释的单一语言 (JavaScript)。
我怀疑随着这个库越来越受欢迎,“Native JavaScript”可能会被用作描述使用这个框架的代码的标签(尤其是因为这就是我通过谷歌得到这个问题的方式)
【讨论】:
原生 JavaScript 都是 JavaScript 代码。不是任何类型的框架代码。 它更快并在浏览器中加载。 您可以用于简单的浏览器任务,不需要任何数据库接口或任何后端大型计算工作。 使用框架会使代码变大,使浏览器变慢。
【讨论】:
我所知道的术语“原生 JavaScript”的唯一上下文涉及编写 JavaScript 对象和/或函数,这些对象和/或函数由 JavaScript 提供程序实现,而不是用 JavaScript 本身编写。例如,您在window 对象上调用的许多函数都是由浏览器以其本机语言(Firefox/Mozilla 的 C++ 等)实现的。这可能就是他们的意思......
它们也可能意味着 vanilla/pure JavaScript(没有像 jQuery 或 Prototype 这样的框架)。考虑与他们联系并要求澄清。
【讨论】:
也是一样,也许只是想知道你所做的不仅仅是 jayesh 等等。
【讨论】:
不,对我来说,Native Javascript 意味着 3rd 方 js 函数可以做常规 js 不能做的事情,有点像 Java-JNI 关系。谷歌 JNEXT 和 JSNI 了解更多信息。
再次,我不知道问题的真实背景,如果我是你,我会要求澄清。
【讨论】: