如果说当年Java曾经梦想统一客户端平台,那么无心插柳柳成荫,如今Javascript却成了真正跨平台的语言,JS不仅是一个工具,已经成为一个很强大甚至超过Java的客户端程序。
Why I'm Becoming a JavaScript Convert认为:
1.JS的闭包Closures 是非常令人惊讶得好(使用Java委托实现面向函数式语言中的map/filter)。
2.非常好的动态多态。
3.使用jQuery或Prototype.js等JS库可以实现跨浏览器
4.JavaScript是一个优雅语言,不只是玩具。
Js在OO面向对象方面也能出乎意料的好,John Resig的简单JS继承模型Simple JavaScript Inheritance就展示了将多态封装到函数中,并且具有类似类继承的对象行为方法。
我们知道,只有具备属性和方法行为一起封装,才能具备OO特性,才能实现一些基本OO原则,比如SOLID原则等。
下面我们看看John Resig是如何赋予JS简单可读的对象类特征,John Resig是一位写了很多JS书籍的作者,曾经在著名Prototype.js(本站采取的JS库) base2等工作。
下面是简单继承模型,非常松耦合,其中NinJa是继承Person的子类:
var Person = Class.extend({ init: function(isDancing){//构造方法 this.dancing = isDancing; }, dance: function(){ //类似Class的方法 return this.dancing; } }); var Ninja = Person.extend({ init: function(){//构造方法 this._super( false ); }, dance: function(){ //类似Class的方法 // Call the inherited version of dance() return this._super(); }, swingSword: function(){ return true; } }); //下面是经典的对象使用方法 var p = new Person(true); p.dance(); // => true
var n = new Ninja(); n.dance(); // => false n.swingSword(); // => true
// Should all be true p instanceof Person && p instanceof Class && n instanceof Ninja && n instanceof Person && n instanceof Class
|
Why I'm Becoming a JavaScript Convert一文利用上述继承模型,使用JS实现了俄罗斯方块程序,可参见原文,看到这些优美的JS代码,你就可能明白,JavaFX真的也无法扭转颓势。
相关参考:
JavaScript & HTML5 - Brave New World
[该贴被admin于2010-04-27 10:43修改过]