Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“什么是”呢;本机JavaScript;?_Javascript - Fatal编程技术网

“什么是”呢;本机JavaScript;?

“什么是”呢;本机JavaScript;?,javascript,Javascript,有所谓的“原生JavaScript”吗?我在即将面试的一份工作描述中看到了这个术语 常规JavaScript与本机JavaScript相同吗?我相信本机JavaScript尊崇“香草”JavaScript,因此没有jQuery、MooTools等。只是简单的旧JavaScript是一样的,也许只是想知道你是否做了比jayesh等更多的事。我所知道的“本机JavaScript”这个术语的唯一上下文涉及编写JavaScript对象和/或函数,这些对象和/或函数由JavaScript提供程序实现,而不

有所谓的“原生JavaScript”吗?我在即将面试的一份工作描述中看到了这个术语


常规JavaScript与本机JavaScript相同吗?

我相信本机JavaScript尊崇“香草”JavaScript,因此没有jQuery、MooTools等。只是简单的旧JavaScript是一样的,也许只是想知道你是否做了比jayesh等更多的事。

我所知道的“本机JavaScript”这个术语的唯一上下文涉及编写JavaScript对象和/或函数,这些对象和/或函数由JavaScript提供程序实现,而不是用JavaScript本身编写。例如,您在
窗口
对象上调用的许多函数都是由浏览器以其本机语言(用于Firefox/Mozilla的C++等)实现的。这可能就是他们的意思


它们也可能意味着普通/纯JavaScript(没有像jQuery或Prototype这样的框架)。考虑联系他们并要求澄清。

< P>不,我的本地JavaScript意味着第三方JS函数,它们可以做普通JS不能的事情,有点像java JNI关系。谷歌JNEXT和JSNI获取更多信息

再说一遍,我不知道问题的真实背景,如果我是你,我会要求澄清。

JavaScript中“本机”一词使用过度

  • 通俗地说,它的用法与Johan的回答一样:no JQuery、Moo、Dojo

  • 与Java的JNI类似,Google的GWT和类似的I-compile-down-to-JavaScript将底层实现称为本机实现

  • 我相信,JS中原生的最初用法是指在ECMAScript中构建和定义的对象,而不是环境。JavaScript作为一种ECMAScript语言,并不打算自给自足;它嵌入在主机环境中,如Web浏览器、Photoshop、Acroread等。当您编写Web客户端程序时,您将使用对象,如
    数学
    函数
    数组
    窗口
    按钮
    。前三个是本机的(独立于主机环境),而后两个是非本机的(由主机环境提供)。这与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
这样的内置函数是本机的,我用对象文本或函数定义创建的任何对象也是本机的。但宿主对象正好相反。抱歉这么说。

原生JavaScript是在浏览器中实现的JavaScript

浏览器实现遵循ECMA标准和一些额外的方法。例如,如果您熟悉jQuery并希望按ID选择元素

$('#myId')
本地JavaScript将是

document.getElementById('myId')

现在,如果你需要做一些简单的任务。您可能不会也不应该加载一个巨大的jQuery库并执行它的所有功能。相反,10行本地Javascript将完成这项工作,而不是5行jQuery代码,我认为,这是下面的示例:

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

原生JavaScript是所有JavaScript代码。不是任何类型的框架代码。 它速度更快,可以在浏览器中加载。 您可以用于简单的浏览器任务,该任务不需要任何数据库接口或任何后端大型计算工作。
使用框架会使代码变大,浏览器变慢。

不要让事情变得太复杂,因为@Ray的答案是正确的,但是一个新的用于构建移动应用程序的JavaScript框架出现了,名为NativeScript 如果还不够混乱的话,这个框架允许您编写纯“普通”JavaScript,但可以调用本机(iOS/Android/WindowsPhone)API

这几乎就像编写一个“本机”应用程序(想想Objective-C/Java/C#),但使用一种在设备运行时解释的语言(JavaScript)


我怀疑随着这个库的流行,“原生JavaScript”可能会被用作描述使用这个框架的代码的标签(特别是因为我是通过谷歌提出这个问题的)

很可能它们指的是JavaScript,而不是像jQuery、Dojo和其他类似的JS库。这完全是错误的。本机对象是纯JavaScript对象,而环境提供的对象(例如浏览器中的DOM节点)称为主机对象。您的答案似乎只说明了部分情况。本机(普通的)JavaScript可以做JavaScript库可以做的任何事情,或者反过来说:一个库不能做比本机代码功能更多的事情。库添加的主要内容是抽象,因此您可以使用更可读、更简洁的代码更轻松地完成某些事情。事实上,这是以额外的计算和额外的字节为代价的。。。Mind=blow。不,它被称为minified或random pattern。快速阅读它,这段代码看起来只是将“helloworld”附加到DOM中。但在尝试时,我得到了错误:VM46:8 Uncaught EvalError:拒绝将字符串作为JavaScript求值,因为在以下内容安全策略指令中,“script src”不是允许的脚本源chrome://resources chrome://test “self”“unsafe inline”https:。请更加努力,您可以运行它,内置是本机的一个子集。部分混淆是JavaScript或JavaScript作为ECMAScript同义词的常见用法。事实并非如此。像jQuery这样的库可以说是本机JavaScript,但它们不是本机ECMAScript,因为它们依赖于主机DOM对象。但是,像Momente.js这样的库是本机ECMAScript,因为它们只依赖于内置对象,而不依赖于主机对象(当然要注意,ECMAScript依赖于主机来访问)