Discuss / JavaScript / javascript并不是一切皆对象

javascript并不是一切皆对象

Topic source

Hello-飞飞

#1 Created at ... [Delete] [Delete and Lock User]

文章中下面这句话存在误导性:

在JavaScript的世界里,一切都是对象。

javascript中并不是一切皆对象,javascript有5种基本类型(UndefinedNullBooleanNumberString)和一个复杂类型(Object)。函数、数组等都是Object,但基本类型不是,不过存在基本数据类型的对象包装。

可以参见如下文章:

  1. http://web.jobbole.com/82016/

  2. http://www.jb51.net/article/35438.htm

呛水的鱼_

#2 Created at ... [Delete] [Delete and Lock User]

这句话其实怎么说呢,说准确也不准确,说错误也不算错。

不准确是因为,确实有所谓基础数据类型存在。

不算错是因为,js的核心思想里面,操作数据,是将所有数据都视为对象进行操作的。

分类上确实包括了基础数据类型,但是对它们进行操作的时候,还是视为对象进行的。比如(123).toString()。js中的方法和函数都是挂载在对象上面的,123你不把他视为对象(也有可能是js自动转换成包装对象或者调用call方法,这点我就不清楚了),这种写法的方法调用根本就不合理:

一个基础数据类型,为什么会有自己的方法?应该是对象才有方法吧。如果你说是继承的,基础数据也不能继承Number.prototype上的方法吧,应该也是对象才能继承类啊。

所以我觉得,没必要纠结这句话准确不准确,重点是我们学js要理解js的核心思想,js在操作中,将一切都以操作对象视为基础。

呛水的鱼_

#3 Created at ... [Delete] [Delete and Lock User]

还有最重要一点,我觉得作为入门教程,廖老师这句话没有什么问题。js的基础部分,确实有很多缺陷。我刚学js时候(js也是我学的第一门语言),也是从这句话开始的。中间当然也纠结过这句话。但是写的稍微多点了,渐渐也就会有自己的想法。js的根基就在于对对象的操作。


  • 1

Reply