为什么没有't一个Null的内置对象包装器
Why there isn't a Null built-in object wrapper?
有四个基本的内置对象包装器(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有两个"无"值(null
和undefined
)已经够糟糕的了。添加第三个(new Null()
)是一个糟糕的想法。
那么,添加new Null()
会增加所有这些复杂性,原因是什么?空对象可以使用什么可能的用途?能够在本质上为null的东西上设置属性和调用方法吗?如果有人需要做这样的事情,你要么做错了,要么实际上想要更接近Java的Optional<T>
类型。
(不要让我开始使用undefined
包装器。)
相关文章:
- jQuery中是否内置了任何字符串格式化函数
- 为什么可以't我访问Chrome内置功能$
- 正在寻找一种跨移动浏览器兼容的方式,通过内置麦克风进行录制
- 使用angularjs内置过滤器过滤代码中的特定属性
- 带有内置图像对象的Canvas组件构造函数;t显示's图像
- 挂钩到Rails内置远程:true'ajax:成功'事件
- 是否有任何内置方法可以更改JavaScript对象'的属性设置为某个值
- html元素是否具有内置的属性
- 为什么没有用于cookie的内置JS函数
- Java Selenium 2.0-在WebElement.click()之前使用内置滚动时处理z索引(navi)
- 我们如何自定义内置的 Angular “货币”过滤器
- AngularJS不覆盖内置验证器
- 角度和内置的javascript映射函数
- 无需Javascript内置函数即可将十进制转换为十六进制
- 在没有内置 Javascript 函数的情况下将基数 10 转换为其他基数 2 的数字
- 从函数向内置函数中添加多个参数
- 用摩卡测试失败的承诺'内置的promise支持
- 在javascript中定义内置类型的方法
- jQuery.remove()不起作用,而其他内置函数则起作用
- 为什么没有't一个Null的内置对象包装器