我已经了解到,null数据类型在JavaScript中是一个原始数据类型,但是由于第一个版本的JavaScript中有一个bug或其他原因,null被认为是一个对象。
但是,让我们假设null是一个真实的对象(而不是真正的原始数据类型),这到底意味着什么,即数据类型是一个对象意味着什么?
例如,如果数据类型是对象,这是否意味着属性和方法可以添加到该数据类型的实例中,而原始数据类型不能将属性和方法添加到其实例中?所以,为什么null实际上是一个原始数据类型而不是一个对象,因为您不能向它的实例中添加属性和方法?
发布于 2021-09-23 05:36:14
ECMAScript语言类型为未定义、空、布尔、字符串、符号、数字、BigInt和对象。
还包括:
null类型正好有一个名为Null的值。对象在逻辑上是属性的集合。
Null和Object是两种不同的数据类型,因为规范就是这样编写的。您所指的特定错误是typeof null返回"object“,即使它是最初打算返回“null”,并且为了向后兼容性,这是保留在规范中。
要回答问题的后半部分,对象是唯一可以直接定义属性的类型。但是,由于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 40https://softwareengineering.stackexchange.com/questions/432152
复制相似问题