Atitit.prototype-base class-based  基于“类” vs 基于“原型”

1. 基于“类” vs 基于“原型”1

2.  对象的产生有两种基本方式。一种是以原型(prototype)对象为基础产生新的对象。一种是以类(class)为基础产生新对象1

3. 基于类(class-based),基于原型(prototype-based)和基于元类(metaclass-based)的对象模型2

4. 基于类(class-based)基于原型(prototyped-based)之分,两者什么差别..2

5. 原型对象: 原型对象的工作原理:3

6. ref3

1.  基于“类” vs 基于“原型”

面向对象编程(Object Oriented Programming)只是一种编程范型(Programming Paradigm),其核心概念是“对象”(Object)。
在这一编程范型之下存在多种不同的风格(Style)。
Smalltalk、C++、JAVA、C# 之类的面向对象编程语言称之为 Class-based OOP Language (基于“类”的面向对象编程语言),而如 NewtonScript、Self、Javascript 之类的语言则称之为 Prototype-based OOP Language (基于“原型”的面向对象编程语言)。

他们都属于面向对象编程语言,区别在于风格不同。除了这两种风格,我记得在论文里还看到过其他风格

基于原型的编程语言在一些领域会非常方便,NewtonScript 当初发表的论文就是应用于苹果早期的“平板”电脑 Newton 之上的,主要用于 UI 部分的编码。作者认为相比于基于类的编程语言,更灵活而且更方便。
关于方便性方面我不想灌输概念,因为这比较主观,容易引起争议。
两种编程风格并无优劣高下之分,主要的差别在于思想和应用领域。建议灵活取舍。

作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

2.  对象的产生有两种基本方式。一种是以原型(prototype)对象为基础产生新的对象。一种是以类(class)为基础产生新对象

3. 基于类(class-based),基于原型(prototype-based)和基于元类(metaclass-based)的对象模型

而在一种所有皆对象的世界观背景下,在类模型基础上还诞生出了一种拥有元类(metaclass)的新对象模型。即类本身也是一种其他类的对象。以上三种根本不同的观点各自定义了三种基于类(class-based),基于原型(prototype-based)和基于元类(metaclass-based)的对象模型

4. 基于类(class-based)基于原型(prototyped-based)之分,两者什么差别..

 

Prototype Based Programming In a class-based language (like JavaLanguage or SmalltalkLanguage), every object is an instance of a class.

基于类型的语言                                        基于原型的语言

1.类型和实例是不相同                               所有的对象都是实例
2.以类型定义定义类;以构造函数实例化         定义和创建一组带有构造函数的对象
3.用new运算符创建一个简单对象                相同
4.通过使用类型定义去定义存在类型的子类     以赋值一个对象带有构造函数作为的原型来构建对象层次
来构建对象的层次
5.通过类型链继承属性                                通过原型链继承属性
6.类型定义指定了一个类型的所有实例的所    构造函数或者原型指定了一组初始的属性.可以对一个对象或者一组对象动态的增加和删除属性。
有属性.不能在运行时动态增加属性

5. 原型对象: 原型对象的工作原理:

每个对象都有一个参考对象,这个参考对象称之为原型对象。原型对象有自己的属性和方法。当A是B的原型对象时,那 么B拥有A中的所有属性和方法。

原型对象的工作原理:

使用原型对象定义一个新的对象时,该对象不会立即拥有原型对象的属性和方法,在调用的时候本对象内部没有的属性和方法是才回去调用原型中的属性和方法。(动态分配).

6. ref

基于原型的语言与基于类型的语言 - zengwh的专栏 - 博客频道 - CSDN.NET.html

Atitit.prototype-base class-based  基于“类” vs 基于“原型”相关推荐

  1. FBV(function base views) 顾名思义基于函数的视图类 CBV(class base views)基于类的视图类

    一. 概念 FBV(function base views) 顾名思义基于函数的视图类 CBV(class base views)基于类的视图类 至于区别呢? 我觉得只是写法上的不一样, 实现的结果都 ...

  2. django 1.8 官方文档翻译: 3-4-2 基于类的内建通用视图

    基于类的内建通用视图 编写Web应用可能是单调的,因为你需要不断的重复某一种模式. Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历 ...

  3. 为基于类的策略选择突发数据量和超额突发数据量

    什么是令牌桶 在我们讨论突发数据量之前,我们首先要理解令牌桶的概念.令牌桶本身没有丢弃和优先级策略, 令牌桶是这样工作的: 1. 令牌以一定的速率放入桶中. 2. 每个令牌允许源发送一定数量的比特. ...

  4. 基于类的软件复用技术

    3.1 基于类的软件复用技术 C++中的类库技术是软件复用的基础,在软件开发过程中,程序员通过调用类库中的函数可以达到软件复用的目的.比如,调用C++类库中的输入输出流函数可以实现输入输出的功能.如下 ...

  5. RK3568 重新封装V4l2为一个C++ Camera管理类 (基于RK编译环境)

    RK3568 重新封装V4l2为一个C++ Camera管理类 (基于RK编译环境,纯linux环境得小伙伴可以自己阅读代码做出对应得修改主要修改(CameraReader.cpp CameraRea ...

  6. JS基于原型链的继承和基于类的继承学习总结

    1. new关键字创建一个对象的过程 (1) 创建一个空的简单对象(即{}) (2)为步骤1新创建的对象添加属性_proto_,该属性连接至构造函数的原型对象 (3)将步骤1新创建的对象作为this的 ...

  7. as 不显示gradle视图_Python构建RESTful网络服务[Django篇:基于类视图的API]

    系列文章介绍 本系列文章将详细介绍将Django官方引导教程中的投票项目改写为RESTful网络服务.Django官方教程地址https://docs.djangoproject.com/zh-han ...

  8. 【文本分类】基于类信息的TF-IDF权重分析与改进

    摘要:改进TFIDF,增加了类间因子.类内因子,应用于文本的特征选择,提高了精度 . 参考文献:[1]姚严志,李建良.基于类信息的TF-IDF权重分析与改进[J].计算机系统应用,2021,30(09 ...

  9. Atitit. 订单管理 收银单持久化 功能设计  基于ecshop订单结构

    Atitit. 订单管理 收银单持久化 功能设计  基于ecshop订单结构 1. 54.order_info  订单 数据结构1 2. Ecshop 的订单api1 2.1. 生成订单 code b ...

  10. python装饰器类-基于类的python装饰器

    python装饰器函数其实是这样一个接口约束,它必须接受一个callable对象作为参数,然后返回一个callable对象.在Python中一般callable对象都是函数,但也有例外.只要某个对象重 ...

最新文章

  1. 浙大版《C语言程序设计(第3版)》题目集 练习2-17 生成3的乘方表 (15 分)
  2. linux 网络传输压塑文件,萌新的Linux学习之路(十一)文件压缩传输
  3. ELK 删除索引只保留10天
  4. JSP 简介(转载)
  5. 几个重要库函数的实现
  6. 不要把Linux和Windows比较
  7. Print 与Debug.Log的区别
  8. vue学习笔记-2-模板语法中得指令
  9. 在阿帕奇服务器布置文件,Apache文件列表服务器美化 index of /
  10. ios自建服务器降级,苹果系统怎样降级?iOS11降级至iOS10的方法
  11. 嵌入式linux调节lcd背光,背光调节的软件设计 - 基于嵌入式Linux的LCD背光调节及驱动实现...
  12. 算法自动生成迷宫地图
  13. 微信扫码下载APK遮罩提示示例
  14. 2104.10729阅读笔记
  15. vue中 给v-for渲染的元素动态添加移除类名
  16. BeiJing2006 狼抓兔子
  17. javascript显示本地服务器图片,JavaScript图片本地预览功能的实现方法
  18. 笔记本光驱拆解——让整个世界变得安静
  19. BPR的几种经典方法(转)
  20. 构建index所需的参考基因组以及各种版本的注释文件

热门文章

  1. RabbitMQ快速入门python教程
  2. 【原创】MySQL 模拟PostgreSQL generate_series 表函数
  3. MySQL数据库使某个不是主键的字段唯一
  4. 《跟阿铭学Linux》第12章 shell脚本中的变量:课后习题与答案
  5. IntelliJ IDEA 将 Maven 构建的 Java 项目打包
  6. React学习笔记—JSX
  7. PriorityQueue 优先队列
  8. for循环中的setTimeout()
  9. jQuery实现瀑布流
  10. 自定义控件2.第一个自定义view