Javascript万物皆对象?

在javascript的世界里,有这么一句话,万物皆对象

但是这个对象,应该怎么理解呢?

exm........??,难道值类型也是对象?!!

当然,不是。

准确地讲是对于“引用类型”而言。

那,在JavaScript的世界里,怎么区分“值类型”和“引用类型”呢?

哟呼,答案:typeof

让我们一起写个demo,猜猜看typeofShow()会输出哪些结果。

 1 <!DOCTYPE html>
 2     <head>
 3         <title>javascript</title>
 4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 5     </head>
 6     <body>
 7         <script>
 8             function typeofShow(){
 9                 console.log( typeof x );
10                 console.log( typeof 1 );
11                 console.log( typeof '' );
12                 console.log( typeof true );
13                 console.log( typeof function(){} );
14                 console.log( typeof [] );
15                 console.log( typeof {} );
16                 console.log( typeof null );
17                 console.log( typeof new Number(1) );
18             }
19             typeofShow();
20         </script>
21     </body>
22 </html>

运行上面代码,打开chrome调试,得下效果图,你猜对了么?

从上图,可以看出,除开“值类型”,typeof输出的其他都是function和object,即“引用类型”。

但是刚才不是说到,引用类型都是对象么。。那typeof  function(){} 输出的怎么是function,而不是object呢?

function到底是不是对象呢?

答案:function也是对象的,不信,我们利用instanceof来检验检验。

 1 <!DOCTYPE html>
 2     <head>
 3         <title>javascript</title>
 4         <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 5     </head>
 6     <body>
 7         <script>
 8             function test(){};
 9             console.log( test instanceof Object);
10         </script>   
11     </body>
12 </html>

 下面是运行结果图

或者还记得函数function还有一种写法么,如下

var fn = new Function(“x”, “y”, “return x+ y ”);

这会信了吧。

通常的对象,一般是利用键值对表示的,例如下面这样:

1 var obj = {
2     one:[],
3     two:'',
4     three: function(){},
5     four:{
6         four1:''
7     }
8 }

可是,那数组和函数不也是对象吗,他们也可以这样表示吗?

当然不可以,但它们可以采用另一种形式。如函数,可以这样:

1 function fn(){
2 
3 }
4 fn.a=[];
5 fn.b=function(){}

总之,在javascript的世界里,对象就是属性的集合。

猜你喜欢

转载自www.cnblogs.com/it-Ren/p/10552141.html