编程游记七 《基于原型的编程》

基于原型的编程其实也是面向对象编程的一种方式。没有class化的,直接使用对象,又叫基于实例的编程,其主流的语言JavaScript, 与传统面向对象比较如下:

  • 基于类的编程中,对象总共有两种类型。类定义了对象的基本布局和函数特性,而接口是"可以使用的"对象,它基于特定类的样式。此模型中,类表现为行为和结构的集合,对所有接口来说这些类的行为和结构都是相同的。
  • 原型编程,基于类的语言提倡使用一个关注分类和类之间关系的开发模型。原型编程提倡程序员关注一系列对象实例的行为,而之后才关心如何将这些对象划分到最近的使用方式相似的原型对象,而不是分成类。

基于原型的系统提倡运行时进行原型的修改,而只有极少数基于类的面向对象系统,允许类在程序允许时被修改。

  • 基于类的语言中,一个新的实例通过类构造器和构造器可选的参数来构造,结果实例由类选定的行为和布局创建模型。
  • 基于原型的系统构造对象有两种方法,通过复制已有的对象或者通过扩展空对象创建。很多基于原型的系统提倡运行时进行原型修改,而基于类的面向对象系统只有动态语言允许类在运行时被修改。

不像基于类的面向对象语言中类和接口的关系,原型和它的分支之间的关系并不要求子对象有相似的内存结构,因为如此,子对象可以继续修改而无需像基于类的系统那样整理结构。还有一个要提到的地方是,不仅仅是数据,方法也能被修改。

这种在对象里面直接修改的玩法,虽然这个特性可以带来运行时的灵活性,我们可以在运行时修改一个prototype,给它增加甚至删除属性和方法。但是其带来了执行的不确定性,也有安全性的问题,而代码还变得不可预测。不像静态类型系统,没有一个不可变的契约对代码的确定性有保证,所以需要使用者来自己保证。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值