为什么没有't一个Null的内置对象包装器

Why there isn't a Null built-in object wrapper?

本文关键字:Null 内置 对象 包装 一个 为什么      更新时间:2023-09-26

有四个基本的内置对象包装器(String、Number、Boolean和Symbol(ES6))

既然null是一个对象,为什么没有null内置的对象包装器,或者如果它是面向基元值的,也可能是未定义的?

我想不出一个用例,但它没有意义吗?

首先,null是而不是对象。(typeof将其识别为这样的原因是一个长期错误的结果。)

在我看来,拥有null包装器的概念听起来很荒谬,因为这本质上是使用一个对象来表示没有对象。此外,当涉及到比较和胁迫时,它会打开另一个漏洞。

new Null() == null的评估结果是什么?嗯,它是一个对象,所以它<不是null,应该返回false。然而,它>表示为null,因此它应该返回true。或者new Null() == null为真而new Null() === null为假?new Null() == undefined呢?啊,JavaScript强制系统已经足够复杂了

此外,JavaScript有两个"无"值(nullundefined)已经够糟糕的了。添加第三个(new Null())是一个糟糕的想法。

那么,添加new Null()会增加所有这些复杂性,原因是什么?空对象可以使用什么可能的用途?能够在本质上为null的东西上设置属性和调用方法吗?如果有人需要做这样的事情,你要么做错了,要么实际上想要更接近Java的Optional<T>类型。

(不要让我开始使用undefined包装器。)