几乎身边的所有人都说,JavaScript和Java很像,学习了Java再来学习JavaScript时,发现这两种表面相似的语言其实有很多不同,现在就来说一说JavaScript面向对象,相同点就不用说了,这里只说说不同。
- 此面向对象非彼面向对象
- 像不像,你说了不算
- 概念上的区别
- 基于类的面向对象(以Java为例)
实例:类的一个具体对象。其拥有的属性和方法与类完全相同。
2.基于原型的面向对象(JavaScript为例)
JavaScript没有类和实例这两个基本概念,不过不得不提JavaScript和Java都说“一切皆是对象”。在基于原型的面向对象语言中,有完全不同的概念
—— 原型对象”。(ps:ECMAScript中没有类的概念,原型对象的概念也是ECMAScript中的)
原型对象就像一个模板,通过原型对象可以创建其它新的对象。模板的作用只是初始化对象中的属性和方法,在这一方面,原型对象与类的概念有类似之处,但是使用原型对象创建的新对象还可以指定自己的属性方法,而使用类创建的实例只能拥有类中的属性和方法,不能有自己的 属性和方法。还有就是,一个对象还可以是另一个对象的原型对象,另一个对象可以共享该对象的原型对象的属性和方法。
- 类和构造函数
Java中创建一个类,在类中添加属性和方法,创建完之后,用new操作符创建一个类的实例,该实例拥有的属性和方法与类完全相同。
在JavaScript中因为没有类,可以定义一个构造函数,在构造函数中定义属性和方法,用new 操作符通过构造函数创建一个对象,且通过构造函数初始化属性和方法。
- 继承
在Java中子类继承父类的属性和方法,同时可以定义自己的属性和方法,同时也通过定义相同的属性和方法来覆盖父类原有的值。
小结: