只要new function()的function有返回值的话那么就应该返回function返回值,但是事实上呢?看下边的例子
js 代码
结果出乎意料,竟然是fn的实例({k:1, j:0});为什么又是function的实例了?继续看下面的实验,在fn中分别return各种数据类型的值,得出一下结果
js 代码
[修正]Boolean是有定义的,ToString()应该是toString();
实验的结论很明显,如果function的返回值是对象的话则返回该对象,否则返回function的实例
再举一个例子:
1 var fn = function(){
2 this.k=1;
3 var privateFun = function(){ };
4 return {
5 publicFun: function() {
6 privateFun();
7 }
8 };
9 }
10 fn.prototype = {
11 j: 0
12 };
13 var fntest1 = new fn();
14 var fntest2 = fn();
15
16 // alert(fntest1);alert(fntest2); 监视时只会看到方法(publicFun),不会看到方法(privateFun)
17 //
18
19 var c=1;