首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Ruby跟JavaScript对象模型的比较

2013-09-29 
Ruby和JavaScript对象模型的比较概要Ruby和JavaScript都是动态脚本语言,他们有许多地方是类的。比如函数都

Ruby和JavaScript对象模型的比较
概要Ruby和JavaScript都是动态脚本语言,他们有许多地方是类似的。比如函数都是一等对象,都有高阶函数等等。。。但是我觉得最像的要属他们的对象模型,比如:他们的类型不伦不类,对象非要搞得像一个属性槽。Ruby的对象模型Ruby,一种为简单快捷面向对象编程而创的脚本语言。他的最大的特点就是面向对象的模型和元编程的能力,Ruby是完全面向对象的,没有任何的原始类型。要注意的是:Ruby是一门正统的面向对象的编程语言,而JavaScript就不是。如果用一句话来说Ruby的对象模型就是类即使类也是对象,而对象即使对象也是一个Hash。怎么能怎么说呢?首先看一看类就是类

class MyClass  def the_method    "general method"  endend
mc = MyClass.newmc.the_method
正统的创建类和对象的语法,可以直接翻译成Java代码。但是Ruby的类不仅仅存在于静态的源文件中,他还存在于运行时。因为Ruby的一个类就是Class的一个对象,同时他还是Object的一个子类。好奇葩吧!看代码
JavaScript,一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。注意这儿的原型,原型的意思就是这里没有类只有对象,对象生对象。其实JavaScript还有一些好兄弟,其中就有一个Io(上Google上看看Io Language)。看一下Io创建一个对象的方法
function Person(){}Person.prototype.name = “Nicholas”;Person.prototype.age = 29;Person.prototype.job = “Software Engineer”;Person.prototype.sayName = function(){alert(this.name);};var person1 = new Person();var person2 = new Person();person1.name = “Greg”;alert(person1.name);//”Greg” - from instancealert(person2.name);//”Nicholas” - from prototypedelete person1.name;alert(person1.name);//”Nicholas” - from the prototype

总之:在Ruby中,一个类是一个Class类的实例,也就是说:一个类就是一个对象,事实上累还是一个常量。既然类也是对象,那么类也可以用Class及其父类中的实例方法。而这些实例方法的定义都是对象通用的方法,这也是为什么类和对象有时会有相等的操作。同时这也导致了一些方法的差异。比如类上作用的是类方法,而对象上作用的是实例方法。在JavaScript中,JavaScript统一了函数和类型变量,认为他们都存在于一个容器中,这个容器就叫属性。因此一个对象 就可以认为是一个无序的属性列表。另外一个属性也可以简单的看作一个名字和他的值构成(当然不止这么简单)。这样一个对象也可以看作一个哈列表。



热点排行