几个名词的对比
- 动态语言
- 指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除,即结构上的变化
- 如众所周知的ECMAScrip(JavaScript)便是一个动态语言
- 除此之外,Ruby、Python也都属于动态语言
- C与C++则不属于动态语言
- 静态语言
- 动态类型语言
- 静态类型语言
- 分析
- 类型检查是在运行前判断(如编译阶段),如C#和java都是静态类型语言
- 静态类型语言为了达到多态,会采取一些类型鉴别手段,如继承、接口
- 而动态类型语言不需要,所以一般动态语言都会采用dynamic typing,常出现于脚本语言中
- 此外,是否是动态类型语言与这门语言是不是类型安全的,是完全不相干的
- 优缺点:
- 优点:结构规范,便于调试,方便类型安全
- 缺点:为此写更多的类型相关代码
- 弱类型语言
- 分析
- 也称为弱类型定义语言
- 与强类型定义语言相反
- 如VB、PHP都属于弱类型语言
- 特点就是对类型检查极不严格,允许将一块内存看做多种类型,比如直接将整型变量与字符变量相加
- 举例
- C和C++是静态语言,但也是弱类型语言(整型变量和字符变量相加)
- Perl和PHP是动态语言,但也是弱类型语言
- JavaScript是弱类型语言,仅能严格的区分指令和数据
- 强类型语言
- 分析
- 在没有强制类型转化前,不允许两种不同类型的变量相互操作
- 强类型语言需要在编译期进行严格检查
- 举例
- 基于原型的语言
- 分析:
- 所有的对象都是实例,只有对象,没有类
- 对象继承对象,而不是类继承类
- “原型对象”,原型对象是新对象的模板,将自身属性共享给新对象
- 因此生成一个对象的方法:先继承原型对象,之后再加自己的
- 优点:节省内存空间
- 当create一个新对象时,新对象不copy原型对象的内存,而是在内存里存引用
- 形成原型链
- 查找属性是,动态查找,当前对象里没有,就利用内存里的引用向上查找
- 注意如果原型链上的一个对象发生改变,那么这个改变也会马上反应到原型链中处于该对象下方的所有对象,这是一个非常有用的特性
- 原型的本质就是对象引用原型对象的属性,实现代码复用
posted @
2016-08-09 08:41
寒汀暮雨钓孤舟
阅读(
243)
评论()
编辑
收藏
举报