Java和JavaScript在面向对象方面的比较
Java | JavaScript |
静态类型 | 动态类型 |
自定义类型可以是类,接口或枚举定义 | 自定义类型由函数或原型定义 |
类型不可在运行时改变 | 类型可在运行时改变 |
定义变量需要声明具体类型(强类型) | 定义变量不需要声明具体类型(弱类型) |
构造器是具体的方法 | 构造器只是一个函数,构造器与函数之间无区别 |
类和实例是不同的实体 | 一切均为对象,构造器函数和原型也是对象 |
支持静态和实例成员 | 不直接支持静态和实例成员 |
由抽象类和接口支持抽象类型 | 不直接支持抽象类型 |
良好的成员作用域支持(private, package, protected,public) | 仅支持public的成员 |
丰富的继承机制 | 仅通过原型继承机制 |
支持方法重载和方法重写 | 不直接支持方法重载和方法重写 |
丰富的反射机制 | 有反射特性 |
由包来支持模块化 | 无直接的包或模块化支持 |