MDN为什么说“ JavaScript中的一切都是对象”?

时间:2019-04-30 18:30:24

标签: javascript

在有关字符串方法(https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Useful_string_methods)的MDN页面上,它说:“我们之前已经说过,然后再说一遍-一切是JavaScript中的对象。 ” 但是另一个MDN页面指出,JavaScript中有7种数据类型,6种原语和对象(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Data_types)。这只是一个错误,对吗?还是我想念的东西?

3 个答案:

答案 0 :(得分:0)

我的术语可能不正确,我不是一个要注意这些细节的人,但这也许可以帮助我们澄清一下。

例如,数字变量具有toExponential方法。 例如,这是无效的3.toExponential(2),但这是完全有效的let a = 3; a.toExponential(2);。另一方面,typeof 3typeof a都返回字符串'number'

因此,什么是“对象”(大致上可以有方法)和变量或文字可以引用的数据类型之间是有区别的。

答案 1 :(得分:0)

我认为这是措辞不佳的选择。通过引用传递的东西是对象(数组或普通对象,函数等)。原始数据类型通过值传递,我认为null为关键字(它也是一个对象)。正确的短语是:

  

“一切都可以表示为对象”

这将消除误解,正如其他人指出的那样,从Number.prototype或String.prototype调用函数的唯一方法是使引擎 implicity 将原语包装为对象。同样,您可以{ "errorMessage": "Syntax error in module 'lambda_function'" } Request ID: "82aa7f11-ad9d-4e80-aadb-838a22b361f7" Function Logs: START RequestId: 82aa7f11-ad9d-4e80-aadb-838a22b361f7 Version: $LATEST Syntax error in module 'lambda_function': expected an indented block (lambda_function.py, line 5)

答案 2 :(得分:-1)

每个数据类型都是它自己的类的实例。 例如字符串。 任何字符串都是Class String的实例 所有实例都从String类继承方法。 方法仅对对象可用,因此您可以认为该字符串是对象。 但是为了节制,所有数据类型都存在。.

我试图解释这个概念,但是它很复杂