javascript:函数就是对象,函数名是指针。

看书的时候对以下两点有疑问:

1.函数就是对象,函数名是指针!

2.var sum = new Function();

   alert(typeof sum);//function  为什么不是object,而是function?

通过以下代码分析:

javascript:函数就是对象,函数名是指针。
 1         //1.函数的定义
 2         function sum1(a1,b1){
 3         return a1+b1;
 4         }
 5         alert(sum1(1,1));//2
 6 
 7         var sum2 = function(a1,b1){
 8             return a1+b1;
 9         };
10         alert(sum2(1,1));//2
11 
12         var sum3 = new Function("a1,b1","return a1+b1;");
13         sum3.age = 100;
14         alert(sum3(1,1));//2
15         alert(sum3.age);//100
16         alert(typeof Function);//function
17         alert(typeof sum3);//function
18         //函数是对象,函数名是指针
19 
20        //2.对象
21        var person = new Object();
22        person.age = 10;
23        person.name = "nic";
24        alert(person.age);//10
25        alert(typeof Object);//function
26        alert(typeof person);//object
27 
28        //总结:
29        //1.从结构上看:new和Object构造实例化了对象person,person包含一个指针
30        //             new和Function构造函数实例化对象sum3,sum3包含一个指针
31        //但是new和Function构造函数定义函数sum3,也就是说sum3是函数也是对象,sum3包含一个指针
32        //因此有:函数是对象,函数名是指针的结论。
33 
34        //2.为什么typeof检测的结果不一致:alert(typeof sum3);//function
35        //                             alert(typeof person);//object
36        //先分析:alert(typeof Function);//function
37        //        alert(typeof Object);//function
38        //可见对象可以通过new和构造函数实例化!
39        //那么alert(typeof sum3);//function  那么new和Funtion定义的sum3函数(也是对象),也可以用通过构造函数实例化对象。
40 
41        //那么可以通过以上结论实践一下,new和Function定义的函数可以当作构造函数实例化对象:
42        var Animal = new Function();
43        alert(typeof Animal);//function
44        var newAniaml = new Animal();
45        alert(typeof newAniaml);//Object
46 
47        //而且function sum(){} 等价于 var sum = function(){};等价于 var sum = new Function();
48        //因此也可以通过前两者定义构造函数,再实例化对象。
javascript:函数就是对象,函数名是指针。

 

javascript:函数就是对象,函数名是指针。,布布扣,bubuko.com

javascript:函数就是对象,函数名是指针。

上一篇:使用Html5多媒体实现微信语音功能


下一篇:Java异常处理