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

问题描述 投票:0回答:3

在关于字符串方法(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)。这只是一个错误,对吗?还是有什么我想念的?

javascript
3个回答
0
投票

我的术语可能已经关闭了,我不是要注意这些细节,但也许这有助于澄清它。

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

因此,“对象”(粗略地说,可以有什么方法)和变量或文字可以引用的数据类型之间存在区别。


0
投票

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

“一切都可以表现为一个对象”

这可以清除误解,正如其他人指出的那样,你可以从Number.prototype或String.prototype调用函数的唯一方法是让引擎将原语包装为一个对象。同样的方式,你可以做这个(function(){console.log(this)}).call(5) //Number {5}


-1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.