首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

面向对象的程序设计

下述内容主要讲述了《JavaScript高级程序设计(第3版)》第6章关于“面向对象的程序设计”。 ECMA-262把对象定义为:”无序属性的集合,其属性可以包含基本值、对象或者函数。”..., 属性)取得给定属性的描述符;通过Object.defineProperties(属性所在的对象, {属性1:描述符对象1, 属性2:描述符对象2})一次性定义多个属性。...二、创建对象 1. 工厂模式 工厂模式抽象了创建具体对象的过程。...原型模式 每个函数都有一个prototype属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型创建的所有实例共享的属性和方法。...原型链 每个构造函数都有一个原型对象(prototype),原型对象都包含一个指向构造函数的指针(constructor),而实例都包含一个指向原型对象的内部指针(__proto__)。

42741

JS面向对象的程序设计

http://www.cnblogs.com/gaojun/p/3386552.html    面向对象的语言有一个标志,即拥有类的概念,抽象实例对象的公共属性与方法,基于类可以创建任意多个实例对象,...但JS中对象与纯面向对象语言中的对象是不同的,ECMA标准定义JS中对象:无序属性的集合,其属性可以包含基本值、对象或者函数。...可以简单理解为JS的对象是一组无序的值,其中的属性或方法都有一个名字,根据这个名字可以访问相映射的值(值可以是基本值/对象/方法)。  ...5、动态原型模式      组合模式中实例属性与共享方法(由原型定义)是分离的,这与纯面向对象语言不太一致;动态原型模式将所有构造信息都封装在构造函数中,又保持了组合的优点。...,Physics alert(person1.getName === person2.getName);//true,//共享原型中定义方法 注:以上内容参考《JavaScript 高级程序设计

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    简述面向对象思想_简述面向对象程序设计的特点

    我们先了解什么是面向过程。面向过程是以函数为基础,完成各种操作,强调过程;面向过程的编程语言,强调的是功能行为,注重过程的一步步实现。而面向对象是已对象为基础,完成各种操作主要强调对象、结果。...面向对象的编程语言,是将功能封装进对象,强调具备某些功能的对象,其实面向对象的语言是基于面向过程的,因为即使是调用某个对象,被调用的对象的方法也是通过面向过程的方式编写的。...在面向对象的程序设计中,对象与消息传递分别表现事物及事物之间的相互关系,通过封装(Encapsulation)将对象的定义和对象的实现分开,通过继承(Inheritance)体现类与类之间的相互关系,以及由此带来的实体的多态...封装指的是隐藏对象的属性以及实现细节,仅对外提供访问的方法。面向对象的程序设计是将数据成员(Data Member)和属于此数据的操作方法(Method)放在同一实体或对象中,就是封装。...这个公共的类称为:父类、超类、基类;其他的几个类称为:子类、派生类。 继承有自身的优点:可以实现代码的复用,利用已存在的父类程序代码,编写子类时只需要写子类特有的属性与行为。

    70730

    JavaScript面向对象的程序设计

    工厂模式 由于 ES6 之前没有 class 概念,所以使用函数来封装的,工程模式采用最直接的传入参数创建对象并赋值,然后返回对象的方式 function Great(name,age) {...,我们知道对象一般以堆内存的方法存储,也就是一堆变量和函数放在一堆,许多的对象就是许多这样的堆 对于构造函数里面定义的函数,创建的每个实例都拥有它,并且名字相同,看似这些函数都是同一个,其实不然,...原型对象储存着所有实例都可以共享的属性和方法 所有的函数在创建时,都会根据一组特定规则创建一个 prototype 来指向函数数的原型对象 每一个原型对象又会拥有一个 constructor 用来指向定义该原型对象的函数...,但是之前就已经有的实例对象还是指着原来那堆砖头并非你用字面量创建的新的一堆砖头,这不就导致该实例对象断开与原型的连接了吗,因为他现在存的那个指针值指向的不过是一堆没人要的砖头,说不定早就被当垃圾回收了呢...,而实例 g 依然还是指着第一次改变名字后的那个原型对象,除非你改变实例 g 的指向,让它指向重写的那个原型对象,否则就永远找不到 原生对象的原型和原型存在的问题 原生对象 比如 Array,String

    25420

    面向对象程序设计的由来

    这些因素叠加起来,大大减轻了程序员的负担, 提升了程序员的工作效率,从而促进了软件行业的快速发展。 典型的面向过程的语言有:COBOL、FORTRAN、BASIC、C 语言等。...传统的面向过程(包括 结构化程序设计)方法已经越来越不能适应快速多变的业务需求了,软件领域迫切希望找到新的银弹来解 决软件危机,在这种背景下,面向对象的思想开始流行起来。...面向对象的思想并不是在第二次软件危机后才出现的,早在 1967 年的 Simula 语言中就开始提出来了,但 第二次软件危机促进了面向对象的发展。...面向对象真正开始流行是在 1980s 年代,主要得益于 C++的功 劳,后来的 Java、C#把面向对象推向了新的高峰。到现在为止,面向对象已经成为了主流的开发思想。...C++合并了面向对象以及系统程序设计。美国政府标准化一种名为Ada的系统编程语言并提供给国防承包商使用。日本以及其他地方运用了大量的资金对采用逻辑编程语言结构的第五代语言进行研究。

    63240

    C++面向对象程序设计_面向对象程序设计的基本机制是

    大家好,又见面了,我是你们的朋友全栈君。 文章目录 一、面向过程和面向对象的区别。 二、面向过程和面向对象的特征。 三、面向对象的基本特征:封装性,继承性,多态性(抽象性)。...1)抽象 2 )封装 3)继承 4)多态 一、面向过程和面向对象的区别。 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。...面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为 二、面向过程和面向对象的特征。...面向过程是把过程作为编程的思路,如程序流程图,但是面向对象是把实体当作对象,如自行车是一个实体,就是一个对象,它有自己的属性,但是它可以派生除别的类,如变速自行车,除了有自行车的特点外,还有变速这个特点...,其实面向对象就是把显示中的一个事务当作一类东西,这类东西具有某些特性,但是它可以派生,就形成具有某个特点的对象,就是派生类 三、面向对象的基本特征:封装性,继承性,多态性(抽象性)。

    33010

    面向对象程序设计的基本原理_面向对象程序设计c++答案

    需要说明的一点是单一职责原则不只是面向对象编程思想所特有的,只要是模块化的程序设计,都适用单一职责原则。...开闭原则可以提高复用性 在面向对象的设计中,所有的逻辑都是从原子逻辑组合而来的,而不是在一个类中独立实现一个业务逻辑。只有这样代码才可以复用,粒度越小,被复用的可能性就越大。...实现开闭原则的关键是抽象化,并且从抽象化导出具体化实现,如果说开闭原则是面向对象设计的目标的话,那么依赖倒转原则就是面向对象设计的主要手段。...依赖倒置原则的核心思想是面向接口编程,我们依旧用一个例子来说明面向接口编程比相对于面向实现编程好在什么地方。...自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚。无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率。

    36610

    JavaScript面向对象程序设计—创建对象的模式

    JS本身为我们提供了Array、Date、Math等不少对象(见《浅析JavaScript的对象系统》),但在实际开发中我们使用最多的还是自定义对象。自定义对象是一门值得研究的学问。...的确,使用对象字面量形式创建对象是非常常用也是我们很喜欢的一种方式,它在只需要单独定义几个对象的时候会很方便。...——《JavaScript高级程序设计(第3版)》 回过头来,还记得工厂模式中无法进行对象识别的那个缺陷吗?没错,通过构造函数模式,我们已经完美地解决了它。...使用构造函数的主要问题,就是每个方法都要在每个实例上重新创建一遍。——《JavaScript高级程序设计(第3版)》 什么意思呢?...——《JavaScript高级程序设计(第3版)》 通过测试可以看到,通过组合使用构造函数模式和原型模式,我们终于实现了使得对象实例拥有自己可完全支配的全部属性,同时还共享了方法引用以节省内存开销。

    92060

    JS-面向对象的程序设计

    今天重读了一下程序设计>>的几章,其中的面向对象的程序设计,写的很好,让自己受益匪浅,特此记录....ECMAScript中没有类的概念,因此它的对象也与基于类的语言中的对象有所不同.ECMA-262将对象定义为:"无序属性的集合,其属性可以包含基本值,对象和函数"....原型模式 我们创建的每个函数都有一个prototype(原型)属性 这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法....按照字面意思理解,prototype就是通过调用构造函数而创建的那个对象实例的原型对象....原型对象的问题在于由共享的本性导致的.如果原型的属性值为对象的话,那么所有实例的这个属性都指向同一个属性,统一修改. 未完待续.....

    37010

    浅谈JavaScript的面向对象程序设计(三)

    前面已经对JavaScript的面向对象程序设计作了简单的介绍,包括了对象的属性、对象的工厂模式、构造函数和原型等。通过介绍,这些创建对象的方法依然有不少优化和改进的地方。...但是我们在5行有判断,只有当函数不存在的时候才调用,避免了函数的多次调用。 寄生构造函数模式   通常情况下,我们使用上面的几种模式已经可以满足多种创建对象的需求了。...这种模式的基本思想是创建一个函数,该函数仅仅是用来封装对象的代码,并返回创建的对象。...person,上面的对象,除了用new 来构造对象外,其他的与工厂模式创建对象的过程是一致的。...通过寄生构造函数模式创建的对象,与构造函数本身并没有关系,构造函数返回的对象与在构造函数创建的对象并没有关系。不能通过instanceof来确定对象的类型。

    55050

    浅谈JavaScript的面向对象程序设计(一)

    面向对象的语言有一个标志,他们都有类的概念,通过类可以创建多个具有相同属性和方法的对象。但是JavaScript中没有类的概念,因此JavaScript与其他的面向对象语言还是有一定区别的。...JavaScript把对象定义为无序属性的集合,其属性可以包含基本值、对象或者函数。对象的每个属性或者方法都有一个名字,而每个名字都映射到一个值。...所有我把JavaScript的对象看成一组无序的键值对。 对象是什么   以前曾介绍过对象的创建,建立对象最简单的方式就是建立Object对象的一个实例,再为他添加属性和方法。...这个方法接收三个参数:属性所在的对象、属性的名字和描述符。描述符对象的属性必须是configurable、enumerable、writable和value中的一个或者多个。...该方法的第一个参数是对象,第二个参数是由需要定义的属性组成的对象。

    73670

    浅谈JavaScript的面向对象程序设计(四)

    本文继续讲解JavaScript的面向对象程序设计。继承是面向对象语言中的一个基本概念,面向对象语言支持两种继承实现方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际的方法。...每一个函数都有一个原型对象,原型对象包含一个指向构造函数的指针,实例包含一个指向原型对象的指针。...组合继承避免了原型链和构造函数的缺陷,是一种常用的继承实现方法。 原型式继承   克罗克福德提出了原型式继承的方法。他的方法是借助原型基于已有的对象创建新的对象,同时还不必因此创建自定义类型。...F,并将F的原型指向参数o,参数o是另一个对象的原型,最后返回F的实例,并且该实例继承了传递进行来的对象的原型。...寄生式继承   寄生式继承与寄生式函数的工厂模式类似,也是创建一个用于封装继承过程的函数。在函数内部以一定的方式增强对象,最后返回对象。

    58090

    浅谈JavaScript的面向对象程序设计(二)

    前面介绍通过Object构造函数或者字面量创建单个对象,但是通过这个的方法创建对象有明显的缺点:调用同一个接口创建多个实例,会产生大量的重复代码。怎么样解决?...可以多次调用这个函数,创建拥有同样属性和方法的对象。工厂模式解决了多次创建,代码重复的问题,但是却遇到了对象识别的问题。我们没有办法识别这些对象。...创建Person对象实例,要经历以下过程:创建一个新对象;将构造函数的作用域赋值给新对象;执行构造函数中的代码;返回新对象。   ...这个对象的用途是可以由特定类型的所有实例共享属性和方法。prototype就是通过调用构造函数创建的实例的原型对象。使用原型的优势是可以让所有的对象实例共享属性和方法。...通过对象实例能够访问保存在原型中的属性值,但是却不能通过对象实例修改原型中的属性值,如果给对象实例添加了一个和原型实例相同名字的属性,则原型中的属性将会被覆盖。

    56460

    重学js之JavaScript 面向对象的程序设计(创建对象)

    什么是面向对象 面向对象的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。但是,在前面提到过。...ES中没有类的概念,因此它的对象也与基于类的语言中的对象有所不同。 对象的定义:‘无序属性的集合,其属性可以包含基本值、对象或者函数。’ 严格来讲,这就相当于说对象是一组没有特定顺序的值。...可以无数次的调用这个函数,而每次它都会返回一个包含三个属性一个方法的对象。工厂模式虽然解决了创建多个相似对象的问题,但却没有解决对象识别的问题(即怎么样找到一个对象的类型) 4....为这个对象添加属性) 返回新对象 对象的 constructor 属性,最初是用来标识对象类型的。...使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法。换句话说,不必再构造函数中定义对象实例的信息,而是可以将这些信息直接添加到原型对象中。

    1.5K30

    重学JavaScript之面向对象的程序设计(继承)

    其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法。...回顾一下构造函数、原型和实例的关系 每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针。那么假如我们让原型对象等于另一个类型的实例。...实际上可以说是没有办法再不影响所有对象实例的情况下,给超类型的构造函数传递参数a。 7. 借用构造函数 利用在子类型构造函数的内部调用超类型构造函数。...寄生式继承 创建一个仅用于封装继承过程的函数,该函数在内部以某种方式增强对象,然后再返回对象。同样也是不能做到函数复用而会降低效率 11. 总结 ES 支持面向对象编程,但不使用类或接口。...js之JavaScript基本概念(下)- 运算符 6、重学js之JavaScript变量、作用域和内存问题 7、重学js之JavaScript引用类型 8、重学js之JavaScript面向对象的程序设计

    35120

    深入理解JavaScript面向对象的程序设计(一)——对象的创建

    JavaScript面向对象的程序设计(一)——对象的创建 一、Object构造函数 类似Java等面向对象语言中创建对象的语法,在 JavaScript中可以通过执行 new操作符后跟要创建的对象类型的名称来创建..."Flanagan" } } var book2 = { "main book": "Java", 'sub-title': "面向对象", author: {...原型的重写是 JavaScript中使用 prototype实现面向对象中继承的思想的重要依据。...七、动态原型模式 动态原型模式是对组合模式的一种改进,组合模式将构造函数的定义和原型的定义分成两部分来写,这对熟悉面向对象语言的人开发人员来说,似乎有点怪怪的。...八、其他模式 除了以上7中创建对象的模式外,还有 寄生构造函数模式 和 稳妥构造函数模式 十、下一篇 JavaScript面向对象程序设计(二)——继承 参考资料 《JavaScript高级程序设计

    42610

    基于C++的面向对象程序设计:类与对象的深入剖析

    面向对象程序设计的基本特点 面向对象程序设计的基本特点包括:抽象、封装、继承、多态。 抽象 抽象是指对具体问题或对象进行概括,抽出其公共性质并加以描述的过程。...一般情况抽象分为数据抽象和行为抽象,其中数据抽象是指一个对象区别于另一个对象的特征,行为抽象是指某类对象的共同特征。...类 类是 C++ 语言支持面向对象思想的重要机制,是实现封装的基本单元。类和对象是面向对象程序设计(OOP)的基本概念。在C++中,类是一种用户自定义的数据类型,它封装了数据成员和成员函数。...其声明形式为: 类名 对象名; 例如声明 area 类的对象 square: area square; 访问对象的成员 定义了类及其对象后,则可访问对象的成员。...对象的声明形式为:类名 对象名。 访问类的数据成员:对象名.成员名。

    18410

    Python面向对象程序设计中对象析构方法的调用时机

    众所周知,从面向对象程序设计角度来讲,在Python语言中,不管类的名字是什么,构造方法的名字统一为__init__(),在创建对象时自动调用,用来对数据成员进行初始化;析构方法的名字统一为__del_..._(),用来释放对象占用的内存空间,在删除对象时自动调用。...创建对象的时机是很显然的,但对象被删除的时机并不像表面看上去那么简单。...但在IDLE环境中,IDLE为主线程,自己的程序运行结束后IDLE主线程尚未结束,创建的对象不会自动删除,除非自己显式使用del关键字删除对象。...只有当引用同一个对象的所有变量都删除之后,对象的引用次数变为0时,才会真正删除对象、调用析构方法、释放内存空间。

    1.4K30

    python学习之面向对象程序设计的一些

    将属于一类的对象放在一起:     如果一个函数操纵一个全局变量,那么两者最好都在类内作为特性和方法实现。 不要让对象过于亲密:     方法应该只关心自己实例的特性,让其他实例管理自己的状态。...简单就好:     让方法小巧起来,一般来说,多数方法都应在30秒内被读完,尽量在代码的行数控制在一页或者一屏之内。...1:写下问题的描述,把所有的名词、动词和形容词加下划线。  2:对于所有的名词,用作可能的类。  3:对于所有的动词,用作可能的方法。  4:对于所有的形容词,用作可能的特性。  ...当我们对即将做的事能抽象出一个模糊的对象草图时,就可以考虑类和对象之间的关系以及他们的作用。剩下的就是逐渐的精炼模型。 1:写下一系列的使用实例,也就是程序应用时的场景,试着包含所有的功能。...2:一步步考虑每个使用实例,保证模型包括所有需要的东西。如果有些遗漏的话就添加进去,如果某处不太正确则纠正,直到满意为止。

    25440
    领券