问答详情
源自:1-2 JavaScript六种数据类型

关于JS里的对象。创建函数对象和函数对象属性的调用。

老师,各位大虾,我想问个问题 就是 我在使用控制台的时候发现,首先声明一个 function abc(){this.ddd=function{alert("1111")}};然后我前后分别定义var a=abc,a=abc(),a=new abc();都是返回undefined;再输入a的时候 ,分别出现 function abc(){内容省去};undefined;最后一个返回了a{ddd:function}  这三者有什么区别吗?  调用a.ddd的时候只有 a=new abc()这一个有返回一个函数,其他的都是undefined。 求解释。。。这三者分别是什么意思。。

提问者:ZeroYan 2015-08-24 17:28

个回答

  • 先酉
    2015-12-15 10:42:50
    已采纳

    function abc(){
      this.ddd = function(){
          alert("111");
      };
      return true;
    };
    console.log(abc());
    var a = abc;
    console.log(a === abc);
    a = abc();
    console.log(a);
    var a = new abc();
    console.log(a);


  • 先酉
    2015-12-15 10:41:20

    首先,function abc(){...} 创建了一个名为abc的函数,此时abc中保存的是函数abc()的地址,所以var a = abc;会将函数abc的地址传给a。这个时候a不应该是undefined,a应该和abc等价,相当于都指向函数abc()。

    var a = abc

    console.log(a === abc) // true

    第二句a = abc(), 相当于将函数abc的执行结果保存到a中,而函数abc是没有返回值的,所以a = undefined。你可以在function abc(){... return true;} 加返回值。这个时候 a = abc(); console.log(a)   // true

    第三句就很好理解了,var a = new abc(),将对象abc的引用赋值给a 。所以这时候a有方法ddd。