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。 求解释。。。这三者分别是什么意思。。
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);
首先,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深入浅出
281102 学习 · 1020 问题
相似问题