对于传统的OOP思想,JS的语法确实比较难搞,其中之一就是实例和对象的区别。
什么是实例?
实例是类的具体化产品。
JS语法没有类这个概念(当然ES6引用了类这个概念)。只能通过构造函数来创建类,例如:
var person = new Object(); //person就是实例
什么是对象?
JS是面向对象的语言,一切都是对象,那么函数也是对象、实例也是对象、对象字面量也是对象,而且JS中所有对象的成员都是公用的。
即:对象是一个具有多种属性的内容结构!
所以:实例都是对象,而对象不全是实例!
对象和函数
通过上面的例子可以知道:函数就是对象;对象不一定是函数,而且在JS中,函数还是第一类对象。
var add = new Function('a','b','return a+b'); //add为一个函数,它也是构造函数Function的一个实例,即对象 add(1,2)