白衣染霜花
谁说对象都是函数构造出来的?所有对象都不是函数构造出来的!对象是由JavaScript运行时环境以原型对象为模板,直接产生出来的。构造函数只是以新生的对象为this,做一些初始化操作。所以,不要以为var p = new Person()说明了p是由Person产生的,其实是由Person.prototype产生的。至于先有函数还是先有对象,这不是个问题。因为那些最基本的内置对象,肯定是由JavaScript运行时环境直接生成的,不适用通常的对象产生规则。比如Object.prototype、Object、Function.prototype等,它们的产生没有先后顺序。有了这些基本对象后,就可以按照JS的规则产生其他对象了。个人观点,仅供参考。要想知道真实情况,还是去读一下V8源码吧。