动态语言是一类在运行时可以改变其结构的语言
例如:新的函数、对象、甚至代码都可以被引进,已有的函数可以被删除或是其他结构上的变化
通俗点说就是运行时代码可以根据某些条件改变自身结构
主要的动态语言:Object-C、C#、JavaScript、PHP、Python 等
与动态语言相对应的,运行时结构不可变的语言就是静态语言,如:Java、C、C++
Java 不是动态语言,但 Java 可以称之为「准动态语言」,即 Java 有一定的动态性
我们可以利用 反射机制 获得类似动态语言的特性,Java 的动态性让编程的时候更加灵活!
xxxxxxxxxx
function Person(name, age, job) {
this.name = name;
this.age = age;
this.job = job
this.hello = function(name){
alert("Hello, " + name);
};
person = new Person("Eric", 28, 'worker');
alert(person.name + '' + person.age + '');
person.hello("Alice");
//为对象添加方法
person.work = function() {
alert('I am working');
}
person.work();
//删除方法
delete person.work;
person.work();
动态类型语言的关键特性是它的类型检查的主体过程是在运行期而不是编译期进行的
静态类型语言在编译期就进行了类型检查
举几个很直白的例子!对于 Java,定义一个变量:
// 在编译期间就必须明确变量 a 的类型
int a = 10;
对于 JS,定义一个变量:
// 在运行期间才知道变量 name 和 age 的类型
var name = "abc";
var age = 10;
对于 Python,定义一个变量:
# 在运行期间才知道变量 info 的类型
info = 1234.3
所以 Java 是静态类型语言;而 JS 和 Python 是动态类型语言
静态类型语言是判断变量自身的类型信息;动态类型语言是判断变量值的类型信息,变量没有类型信息,变量值才有类型信息