对有关对象的描述进行剖析:
是一种数据类型吗?一般称为Object类型,而Object的中文释义就是对象,所以在中文中说对象类型并没有问题。
故而对象的第一层意思,就是对象数据类型。
是一个集合吗?
高程中说:es中的对象时一组数据和功能的集合。
MDN文档中说:对象是一个包含数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法),让我们通过一个例子来了解它们。
集合的概念很简单,有成员才有集体,没有成员就没有集体这个概念。集合的主要特征是多,而不是突出一。
综合以上会发现,即使是非常专业的教材和文档对于对象的描述也还是存在不和。
先取其共同之处,也就是“对象是一个集合”。
第二个共同之处是“集合中包含数据”,这里的数据同样是一个笼统的概念。看一个具体的例子:
1 var person={ 2 name:'孙悟空', 3 greet: function(){ 5 alert('hi'); 6 }
}
name算不算数据,当然算。
‘孙悟空’算不算数据,算。
事实上即便是函数,最终也还是以数据存储的,所以如果真的深究,没有尽头,只需要明白其各自所指就足够了。
两种描述,一个叫功能,一个叫方法,哪一个更好?个人觉得是方法。
看一个单词,functionality。
function我们知道叫函数,但functionality指的是函数具有的特性,是“功能”的意思。
事实上,有一个概念要弄清楚,函数和方法一样吗?我会写一篇文章专门来探讨,敬请期待。
从形式上看,对象person是包含了一些key:value,还有function,所以没有必要复杂化,按照最直观的方式来解释对象就好了。
如果想描述对象的组成部分,就数据(键值对)和方法。
一锤定音,以后我自己在描述对象时,会使用如下定义:
对象是由数据和方法组成的集合。