研磨JavaScript系列(二):没有类

object就是对象的类型。在JavaScript中不管多么复杂的数据和代码。都可以组织成object形式的对象。

但JavaScript没有"类"概念。

看下面这段JavaScript代码:

 1 <script type="text/javascript">
 2     var life = {}; //光溜溜的生命对象
 3     
 4     for(life.age = 1; life.age <= 3; life.age++){
 5         switch(life.age){
 6             case 1:
 7                 life.body = "卵细胞";   //增加body属性
 8                 life.say = function(){alert(life.age + life.body);}   //新建say()方法
 9                 break;
10             case 2:
11                 life.tail = "尾巴";   //增加tail属性
12                 life.gill = "腮";     //增加gill属性
13                 life.body = "蝌蚪";   
14                 life.say = function(){alert(life.age + life.tail + life.gill + life.body);}
15                 break;
16             case 3:
17                 delete life.tail;   //删除tail属性
18                 delete life.gill;   //删除gill属性
19                 life.leg = "四肢";   //增加leg属性
20                 life.lung = "肺";    //增加lung属性
21                 life.body = "青蛙";
22                 life.say = function(){alert(life.age + life.leg + life.lung + lifed.body);}
23                 break;
24         }
25         life.say();   //调用say()方法,此方法逻辑每次都会动态改变
26     }
27 </script>

这一段JavaScript程序一开始产生了一个生命对象life,life诞生时只有一个光溜溜的对象,没有任何属性和方法。

在第一次生命过程中,他有了一个身体属性body,并有了一个say()方法,看起来是一个卵细胞。

在第二次生命过程中,他又长出了尾巴和腮,有了tail和gill属性,显示他是一个蝌蚪。

在第三次生命过程中,它的tail和gill属性消失了,但又长出了四肢和肺,有了leg和lung属性,从而最终成为了青蛙。

还记得儿时,那个小蝌蚪找妈妈的童话故事吗?可爱的小蝌蚪也就是在其自身类型的不断演化过程中,逐渐变成了妈妈一样的"类",从而找到了自己的妈妈。这个故事中蕴含的编程哲理就是:对象的"类"是从无到有,又不断演化,最终又消失于无形中。。。。

"类",的确可以帮助我们理解复杂的现实世界,这纷乱的现实世界的确需要进行分类。但如果我们的思想被"类"束缚住了,"类"也就变成了"累"。如果一个生命对象开始时就被规定了固定的"类",那么他还能演化吗?

所以JavaScript中没有"类",类已化于无形,与对象融为一体。正是由于放下了"类"这个概念,JavaScript的对象才有了其他编程语言所没有的活力。

文章声明本文部分内容参考自《悟透JavaScript》,这是一本学习JavaScript非常好的书。

原文地址:https://www.cnblogs.com/HLiang/p/no_class.html