JavaScript:面向对象
2016-03-19 13:58
381 查看
几乎身边的所有人都说,JavaScript和Java很像,学习了Java再来学习JavaScript时,发现这两种表面相似的语言其实有很多不同,现在就来说一说JavaScript面向对象,相同点就不用说了,这里只说说不同。
此面向对象非彼面向对象
面向对象的程序设计语言,总的来说可以分为两种:基于类的面向对象语言,基于原型的面向对象语言,JavaScript属于后者,而Java,C++就属于前者。
像不像,你说了不算
概念上的区别
基于类的面向对象(以Java为例)
类:Java和C++或者其他面向对象语言都有类的概念,类被用来定义一个对象的所有属性和方法的集合 。例如:一个汽车类可以用来描述所有汽车。这里“类”就是一种类别。
实例:类的一个具体对象。其拥有的属性和方法与类完全相同。
2.基于原型的面向对象(JavaScript为例)
JavaScript没有类和实例这两个基本概念,不过不得不提JavaScript和Java都说“一切皆是对象”。在基于原型的面向对象语言中,有完全不同的概念
—— 原型对象”。(ps:ECMAScript中没有类的概念,原型对象的概念也是ECMAScript中的)
原型对象就像一个模板,通过原型对象可以创建其它新的对象。模板的作用只是初始化对象中的属性和方法,在这一方面,原型对象与类的概念有类似之处,但是使用原型对象创建的新对象还可以指定自己的属性方法,而使用类创建的实例只能拥有类中的属性和方法,不能有自己的 属性和方法。还有就是,一个对象还可以是另一个对象的原型对象,另一个对象可以共享该对象的原型对象的属性和方法。
类和构造函数
Java中创建一个类,在类中添加属性和方法,创建完之后,用new操作符创建一个类的实例,该实例拥有的属性和方法与类完全相同。
在JavaScript中因为没有类,可以定义一个构造函数,在构造函数中定义属性和方法,用new 操作符通过构造函数创建一个对象,且通过构造函数初始化属性和方法。
继承
在Java中子类继承父类的属性和方法,同时可以定义自己的属性和方法,同时也通过定义相同的属性和方法来覆盖父类原有的值。
小结:
此面向对象非彼面向对象
面向对象的程序设计语言,总的来说可以分为两种:基于类的面向对象语言,基于原型的面向对象语言,JavaScript属于后者,而Java,C++就属于前者。
像不像,你说了不算
概念上的区别
基于类的面向对象(以Java为例)
类:Java和C++或者其他面向对象语言都有类的概念,类被用来定义一个对象的所有属性和方法的集合 。例如:一个汽车类可以用来描述所有汽车。这里“类”就是一种类别。
实例:类的一个具体对象。其拥有的属性和方法与类完全相同。
2.基于原型的面向对象(JavaScript为例)
JavaScript没有类和实例这两个基本概念,不过不得不提JavaScript和Java都说“一切皆是对象”。在基于原型的面向对象语言中,有完全不同的概念
—— 原型对象”。(ps:ECMAScript中没有类的概念,原型对象的概念也是ECMAScript中的)
原型对象就像一个模板,通过原型对象可以创建其它新的对象。模板的作用只是初始化对象中的属性和方法,在这一方面,原型对象与类的概念有类似之处,但是使用原型对象创建的新对象还可以指定自己的属性方法,而使用类创建的实例只能拥有类中的属性和方法,不能有自己的 属性和方法。还有就是,一个对象还可以是另一个对象的原型对象,另一个对象可以共享该对象的原型对象的属性和方法。
类和构造函数
Java中创建一个类,在类中添加属性和方法,创建完之后,用new操作符创建一个类的实例,该实例拥有的属性和方法与类完全相同。
在JavaScript中因为没有类,可以定义一个构造函数,在构造函数中定义属性和方法,用new 操作符通过构造函数创建一个对象,且通过构造函数初始化属性和方法。
继承
在Java中子类继承父类的属性和方法,同时可以定义自己的属性和方法,同时也通过定义相同的属性和方法来覆盖父类原有的值。
小结:
相关文章推荐
- knockoutjs十四 option绑定
- JS的魅力
- JavaScript 资源大全中文版
- JavaScript 事件模型
- MIME类型(JSP中)
- jsp机制基础
- JS阻止事件被频繁点击
- javascript中sort()的排序说明
- 55个javascript经典用法
- 深入解析JavaScript中函数的Currying柯里化
- knockoutjs十三 focus checked绑定
- 在javascript里 string 和 int 类型转换
- 在javascript里 string 和 int 类型转换
- js作用域问题
- 浅谈JavaScript原型链继承方式与闭包
- Jsp与servlet的区别 1
- javascript表单验证
- JSTL函数标签库的fn标签
- JS - 删除确认
- 闲扯json取值,联想map取值。