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://www.cnblogs.com/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. 基于类和基于函数的python多线程样例

    不断的练,加深记忆吧. #!/usr/bin/env python # -*- coding: utf-8 -*- import threading import time exitFlag = 0 ...

  2. Django 1.6 基于类的通用视图

    Django 1.6 基于类的通用视图 最初 django 的视图都是用函数实现的,后来开发出一些通用视图函数,以取代某些常见的重复性代码.通用视图就像是一些封装好的处理器,使用它们的时候只须要给出特 ...

  3. 基于类(Java)和基于原理(JavaScript)的对象系统的比较

    Java:面向对象编程语言,吸收了C++语言的各种优点,丢掉了C++让人头疼的多继承.指针等概念.具有功能强大和简单易用的两大特征.Java具有简单性.面向对象.分布式.健壮性.安全性.平台独立与可移 ...

  4. django-rest-framework之基于类的视图

    前言:上一篇博客中,主要讲的是请求和响应,项目里面views.py中的视图函数都是基于函数的,并且我们介绍了@api_view这个很有用的装饰器.同时,我们还介绍了APIView这个类,但是还没使用它 ...

  5. django 中基于类的视图

    django 视图 分为两种: 1.  FBV  基于函数的视图      function   based  view 2.  CBV  基于类的视图         class   based  ...

  6. Django入门与实践-第22章:基于类的视图

    http://127.0.0.1:8000/boards/1/topics/2/posts/2/edit/ http://127.0.0.1:8000/ #boards/views.py from d ...

  7. 介绍——基于类的视图(class-based view)

    ​刚开始的时候,django只有基于函数的视图(Function-based views).为了解决开发视图中繁杂的重复代码,基于函数的通用视图( Class-based generic views) ...

  8. Django——基于类的视图源码分析 一

    基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式. 借助于OO和Python中方便的多重继承特性, ...

  9. Django——基于类的视图源码分析 二

    源码分析 抽象类和常用视图(base.py) 这个文件包含视图的顶级抽象类(View),基于模板的工具类(TemplateResponseMixin),模板视图(TemplateView)和重定向视图 ...

随机推荐

  1. winform 使用SplashScreen窗口

    SplashScreen,就是平时我们说的溅射屏幕,任何一个做过客户端程序的coder应该对它都不陌生,因为它能提升用户体验,让软件看上去更美.SplashScreenForm通常进入程序时是打开,主 ...

  2. Setup JIRA Service Desk 3.9.2 on Oracle Linux 6.8

    OS Oracle Linux 6.8 V138414-01.iso Database mysql5.6.30 MySQL-5.6.30-1.el6.x86_64.rpm-bundle.tar JIR ...

  3. Sqlserver数据库还原.bak文件失败的两个问题

    一.SQL Server数据库备份还原后,在数据库名称后会出现“受限制访问”字样      解决方案:将数据库限制访问改为:SINGLE_USER 数据库-->属性-->选项-->状 ...

  4. appium+python自动化49-yaml管理定位元素

    前言 如何高效管理定位元素,这个是很有学问的问题,也是面试必问的[以下纯属个人观点,勿喷!]. 有的人用xml管理页面定位元素,这种逼格略高,但是小编认为学习成本大,贼麻烦. 有的人提到用excel管 ...

  5. 一日一点RakNet(3)--介绍

    介绍 安装 请参考Compiler Setup页,有什么问题在这块有解答.如果有额外的问题参考FAQ,http://www.jenkinssoftware.com,或者邮件联系我们.高级用户可以直接跳 ...

  6. Delphi中Frame的使用方法(2)

    Frame在写代码时和一般组件有什么不同呢?比如(1)中的客户信息的frame,如果想重写客户编辑按钮的click事件,会发生什么呢: procedure TBusOnSiteManager.Fram ...

  7. Maven C盘用户文件下没有.m2

    在配置好Maven的环境之后,先运行一条命令: mvn help:system 该命令会打印出所有的Java系统属性和环境变量. 运行这条命令的目的是让Maven执行一个真正的任务.可以从命令行上看到 ...

  8. Java中PriorityQueue详解

    Java中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示.本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度, ...

  9. [ES6] 08. Destructuring Assignment -- 1

    Here is the way you get value from an object: var obj = { color: "blue" } console.log(obj. ...

  10. Gradle在Android中的基本使用

    1.基本概念 程序开发作为一种工程作业,不光是编写代码,还涉及到工程的各种管理(依赖,打包,部署,发布,各种渠道的差异管理.....).很多时候,我们反复的build,clean,签名,打包,发布,那 ...