首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是什么决定了JavaScript中的数据类型是对象还是原始数据类型?

是什么决定了JavaScript中的数据类型是对象还是原始数据类型?
EN

Software Engineering用户
提问于 2021-09-22 23:18:53
回答 1查看 57关注 0票数 1

我已经了解到,null数据类型在JavaScript中是一个原始数据类型,但是由于第一个版本的JavaScript中有一个bug或其他原因,null被认为是一个对象。

但是,让我们假设null是一个真实的对象(而不是真正的原始数据类型),这到底意味着什么,即数据类型是一个对象意味着什么?

例如,如果数据类型是对象,这是否意味着属性和方法可以添加到该数据类型的实例中,而原始数据类型不能将属性和方法添加到其实例中?所以,为什么null实际上是一个原始数据类型而不是一个对象,因为您不能向它的实例中添加属性和方法?

EN

回答 1

Software Engineering用户

发布于 2021-09-23 05:36:14

来自ECMAScript 2020规范

ECMAScript语言类型为未定义、空、布尔、字符串、符号、数字、BigInt和对象。

还包括:

null类型正好有一个名为Null的值。对象在逻辑上是属性的集合。

Null和Object是两种不同的数据类型,因为规范就是这样编写的。您所指的特定错误是typeof null返回"object“,即使它是最初打算返回“null”,并且为了向后兼容性,这是保留在规范中

要回答问题的后半部分,对象是唯一可以直接定义属性的类型。但是,由于JavaScript是一种基于原型的语言,您仍然可以通过它们的原型使用自定义属性和方法来扩展其他类型(除了未定义的和空的)。例如:

代码语言:javascript
复制
var x = 10; // x is a Number
x.foo = 20; // doesn't work since x is not an Object

// Number.prototype is an Object, so you can add properties to it
Number.prototype.foo = 30;
Number.prototype.bar = function() { return 40; }

x.foo; // returns 30
x.bar(); // returns 40
票数 3
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/432152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档