我对javascript中的函数如何工作有一些疑问。
案例1:
function myFunction(){
var _instance = this;
_instance.show = function() {
return "hi";
}
return function(){ return "hello"; };
}
var t2 = new myFunction();
alert(t2()); //this will show hello
alert(t2.show()); //this will cause error t2.show is not a function
案例2:
function myFunction(){
var _instance = this;
_instance.show = function() {
return "hi";
}
return 5;
}
var t2 = new myFunction();
alert(t2.show()); //this will show hi
alert(t2());//this will cause error t2 is not a function
在案例1中,我理解它返回了匿名函数。这就是为什么我可以调用t2(),而不是t2.show
在第2种情况下,我希望它返回一个数字5,但它返回了一个myFunction实例。这就是为什么我可以调用t2.show(),而不是t2()。
这很奇怪。可以解释为什么它表现得那样吗?
感谢。