JS中的Function()函数对象

Object()构造函数可以看做是:var Object=new Function();
Array()构造函数可以看做是:var Array=new Function();
.....那么:
Function()构造函数可以看做是:var Function=new Function()?
自己创建了自己?
还有类似的其他的一些原生对象,Object.prototype,作为原型链的终极原型对象,他是怎么被创造出来的?难道也是new Object()创造出来的?但Object.prototype不应该是JS原生系统里第一个对象吗?
感觉已经无法理解JS的基于原型思想了,还请大神指点.......

阅读 3.7k
3 个回答

其实不是鸡生蛋蛋生鸡的问题,所有的对象其实都是function,包括function自己;先说原型,原型基于构造函数和__proto__,并且这两个包含于prototype,并且这三个一起组成了一个function;原型链基于__proto__的指向,原型链是自底向上,就近原则,查找想要的属性,形成原型链;所以js是模拟的语言,这也是它和其他语言的本质区别!

  1. 可以通过new来产生对象(函数)跟所有的对象(函数)都需要通过new来产生是不一样的。

  2. Function,Object等可以认为是js实现的过程中提供的,我的理解是浏览器为了实现原型链,在提供这些函数的时候按照原型链的实现给他们添加了__proto__-->***.prototype。就是js环境提供了几个特殊的对象(函数),然后为了不违背规范,对这些对象(函数)做了处理。

第一条肯定是对的,第二条是我的理解。

                      null
                       |
           Object---prototype
              |
Function---prototype
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题