研磨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非常好的书。