请问javascript内置Function问题?内置构造函数有Array(),String(),Number(),Object(),内置对象有Array,String,Number,Object请问这些内置对象是从内置函数里return返回出来的,还是用new创建出来引用对象的?第二个问题:function a(){}document.write (a.constructor)
为什么可以把a当做对象呢?a只是一个函数名啊,如果写成a().constructor为什么就不行?而Array().constructor就可以呢?a对象的构造函数是function Function(){}a为什么会是对象呢?a是一个函数名啊,Function()内置构造函数会构造出a函数名?不明白?

解决方案 »

  1.   

    在JavaScript中,一切皆是对象,函数是第一型!"请问这些内置对象是从内置函数里return返回出来的,还是用new创建出来引用对象的? "
    它们属于JavaScript原生对象,不属于你说的这两种方式。"为什么可以把a当做对象呢?"
    参见开头所述"如果写成a().constructor为什么就不行? 而Array().constructor就可以呢? "
    因为你的a未设置返回值,这时候它默认返回undefined,undefined是木有constructor属性的。Array函数返回数组对象,所以可以。"a为什么会是对象呢?a是一个函数名啊,Function()内置构造函数会构造出a函数名?不明白?"
    参见:function 语句
    声明一个新的函数。
    function functionname([arg1 [, arg2 [,...[, argN]]]])
    {
       statements

    参数
    functionname 
    必选项。函数名。 
    arg1...argN 
    可选项。函数理解的参数列表、各个参数之间用逗号分开。 
    statements 
    可选项。一个或多个 JScript 语句。
      

  2.   

    发现楼主最近提了特别多关于JavaScript理论性的问题,这是一个好现象,说明你真的想学好JavaScript,建议楼主准备些参考资料以供查阅。
      

  3.   

    a对象的构造函数是function Function(){} 
    因为a是个函数,所以他的构造器就是本地的Function对象,也就是说a是由Function构造出来的。为什么可以把a当做对象呢?a只是一个函数名啊,如果写成a().constructor为什么就不行? 
    正如2L所说Javascript中,函数都是对象.
    而a()并不具备值,没有return回任何值。a().constructor:我觉得会首先调用a函数,由于它没有值,所以当然也就constructor参见:http://blog.csdn.net/kittyjie/archive/2009/07/26/4380918.aspx
      

  4.   

    所以当然也就没有constructor 少了两个字..
      

  5.   

    推荐lz看这本书《JavaScript 高级程序设计》(Professional JavaScript for Web Developers)
    一定会让你的头脑有种非常清醒的感觉