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

来源:1-2 JavaScript六种数据类型

ZeroYan

2015-08-24 17:28

老师,各位大虾,我想问个问题 就是 我在使用控制台的时候发现,首先声明一个 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。 求解释。。。这三者分别是什么意思。。

写回答 关注

2回答

  • 先酉
    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);


    ZeroYa...

    非常感谢!

    2015-12-15 15:44:34

    共 1 条回复 >

  • 先酉
    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。



JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281102 学习 · 1020 问题

查看课程

相似问题