Object()构造函数可以看做是:var Object=new Function();
Array()构造函数可以看做是:var Array=new Function();
.....那么:
Function()构造函数可以看做是:var Function=new Function()?
自己创建了自己?
还有类似的其他的一些原生对象,Object.prototype,作为原型链的终极原型对象,他是怎么被创造出来的?难道也是new Object()创造出来的?但Object.prototype不应该是JS原生系统里第一个对象吗?
感觉已经无法理解JS的基于原型思想了,还请大神指点.......
其实不是鸡生蛋蛋生鸡的问题,所有的对象其实都是function,包括function自己;先说原型,原型基于构造函数和__proto__,并且这两个包含于prototype,并且这三个一起组成了一个function;原型链基于__proto__的指向,原型链是自底向上,就近原则,查找想要的属性,形成原型链;所以js是模拟的语言,这也是它和其他语言的本质区别!
可以通过new来产生对象(函数)跟所有的对象(函数)都需要通过new来产生是不一样的。
Function,Object等可以认为是js实现的过程中提供的,我的理解是浏览器为了实现原型链,在提供这些函数的时候按照原型链的实现给他们添加了
__proto__-->***.prototype
。就是js环境提供了几个特殊的对象(函数),然后为了不违背规范,对这些对象(函数)做了处理。第一条肯定是对的,第二条是我的理解。
雷雷