JS基本数据类型与对象的valueOf方法

来源:互联网 发布:网络短信群发免费版 编辑:程序博客网 时间:2024/04/28 23:57

js基本数类型

javascript高级程序设计第三版中讲到,js基本数据类型有五个,分别是undefinded、null、boolean、string以及number,但是我们有时候会在很多相关博客以及书籍中看到他们所讲的基本数据类型和此处不一致,其中尤为冲突显眼的就是object类型以及function类型,如果真的要说哪一个讲得有道理,还真的不好说,前者来自于相对于众多开发者比较熟悉的书籍,在一定程度上被大家所提倡信奉此处贴一篇关于js基本数据类型的不同观点的文章。另外在w3c中也有关于讲解js基本类型的教程,讲的是和前者一样的。

w3c基本数据类型教程
js中的基本类型之争
知乎大神关于js基本类型的说法

本文讲的也很在理,个人是没法反驳
文中提到,将js基本类型整理为六类,如下图所示
sixType.png

主要依据就是typeof的所有种类来定的,貌似typeof的结果也只有图中所展示的六种,尤其null,下图是测试的结果展示
allType.png
图中typeof null 以及 typeof {} 的结果是相同,也就是说他们的原始类型也是一样的(其实自己的也不知道该不该把原始类型的基本类型混为一谈),以及最后的typeof function() {}的结果,这也就导致后者说法的产生。个人有点赞同后者意见,但是w3c官方文档都与前者相似,就只能慢慢找答案了。


说到基础类型,那就不得说到js的引用类型,Object、Boolean、Number、String这些以对象方式存在的类型
referenceType.png
引用类型都会有与之对应的基本类型,Boolean对应boolean,String对应string,Object对应object,Number对应number。

valueOf方法

我们会发现每一个引用类型的对象中都会有相对应的valueOf方法,自带或者是继承自父类,W3C教程说到,valueOf返回当前对象的原始值
primitiveValue.png
当我们以构造函数的方式新建一个对象时(引用类型),如图中所见在控制台可直接看到当前对象的原始值,valueOf方法我们可以通过自身的重写实现,典型的例子就是String实例化对象调用valueOf方法时,其实调用的是toString方法,这个比较特殊。
其实所谓五种基本类型以及引用类型都有与之对应的valueOf方法,此处可参考一下文章

一眼毁三观:JS中令人发指的valueOf方法

valueOf.png
**此文为个人学习经验总结,若有不当之处,还望指出
以上**

2 0
原创粉丝点击