面向对象

JavaScript面向对象程序设计(7): 闭包

假如想象 提交于 2019-11-30 00:59:17
闭包这个概念看上去很深奥,这个词在离散数学里面的意思确实比较难于理解。在这里,我们先可以把闭包理解成是一种匿名函数或者匿名类。 1. 什么是闭包? 什么是闭包?一种正式的解释是:所谓闭包,指的是一种拥有很多变量并且绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是这个表达式的一部分。 相信很多人都不会理解这个定义,因为他的学术味道太浓了——或许你喜欢从字面的语法上进行分析:首先,它是一个表达式,这个表达式绑定了很多变量以及这些变量的环境。不过这并没有什么意义,这依然不会告诉我们什么是闭包。 那么,来看一个例子: function add(a) { return function (b) { return a + b; }; } var func = add(10); alert(func(20)); 我想经过了前面有关函数的描述,这个例子应该很清楚的理解。JavaScript里面的函数就是对象,他可以做对象能做的一切事情——我们首先定义了一个函数add,它接受一个参数,这个函数返回一个匿名函数,这个匿名函数也接受一个参数,并且会返回这个参数同外部函数的那个参数的和。因此在我们使用的时候,我们将add返回的匿名函数赋值给func,然后调用func,就返回了这两个数的和。 当我们创建一个这样的函数,这个函数内部的一个变量能够在函数外面被引用时,我们就称创建了一个闭包

js面向对象程序设计(二)

牧云@^-^@ 提交于 2019-11-30 00:57:05
for-in循环可以循环所有实例可以拥有的属性,包括实例自己的属性和原型对象的属性,也包括Enumerable标记为false的属性。但是在ie中浏览器会跳过被标记为不可枚举的属性,但不是所有浏览器都是这样。 要获取对象上所有可以枚举的属性可以使用ecma5提供的Object.keys()方法,该方法返回对象所有可以枚举的属性,如果传入的参数是原型对象则返回原型对象的属性,属性的顺序与for-in循环出现的顺序一致,如果传入的是实例对象,则返回对象的实例属性,例如: function Person(){} Person.prototype.name = "Nicholas"; Person.prototype.age = 29; Person.prototype.job = "Software Engineer"; Person.prototype.sayName = function(){ alert(this.name); }; var keys = Object.keys(Person.prototype); alert(keys); //"name,age,job,sayName" var person1=new Person(); person1.name="zhangsan"; person1.job="worker"; var keys2=Object.keys

Java——面向对象

徘徊边缘 提交于 2019-11-29 23:02:36
Java——理解面向对象 一:什么是面向对象编程? 面向对象编程 ( Object Oriented Programming, OOP ,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的 单元 或对象组合而成。OOP 达到了 软件工程 的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。 面向对象是由OOA(面向对象分析)、OOD(面向对象设计)、OOP(面向对象编程)三个部分组成。其中,OOA和OOD的结构需要使用一种方式来描述并记录,目前统一采用UML(统一建模语言)来描述并记录OOA、OOD的结果。 Java语言是纯粹的面向对象的程序设计结构,这主要表现在Java的三种基本特征:继承,封装和多态。 目前主流的开发方法是:结构化开发方法和面向对象开发方法。C、Basic、Pascal等都是结构化编程语言,C++、C#、Java、Ruby等都是面向对象的编程语言。 二:程序有哪三种基本结构? 顺序结构,选择结构,循环结构。 顺序结构 :程序中的各操作是按照它们在源代码中的排列顺序依次执行的。 选择结构 :程序的处理需要根据某个特定的条件选择其中的一个分支执行。选择结构有单选择,双选择和多选择三种形式。 循环结构 :程序反复执行某个或某些操作,知道某个条件为假(或为真

python 类

为君一笑 提交于 2019-11-29 22:25:52
如果不会就不能说自己会编程 面向对象   OOP编程是利用类和对象来创建各种模型来实现对真实世界的描述,基于面向对象的程序可以合人更容易理解代码逻辑。 class Dog: def bulk(self): print("Chenronghua:wangwangwang!!") d1=Dog();d2=Dog();d3=Dog() d1.bulk();d2.bulk();d3.bulk() View Code View Code 封装 继承 多态 来源: https://www.cnblogs.com/xupanfeng/p/11537837.html

JS面向对象——原型模型

耗尽温柔 提交于 2019-11-29 19:43:08
以下通过一段示例代码,说明原型模型中的基本概念以及知识点。 <!DOCTYPE html> <html> <head> <title>原型模型</title> <script type="text/javascript"> function Person(){}; // Person.prototype.name="Lucy"; // Person.prototype.age=15; // Person.prototype.sayName=function(){ // alert(this.name); // }; //3.更简单的原型语法 Person.prototype={ constructor:Person,//若constructor属性值真的很重要,则需要手动设置回适当的值。 name:"Lucy", age:15, sayName:function(){ alert(this.name); } }; // var p1,p2; p1=new Person(); p2=new Person(); //hasOwnProperty()检测一个属性存在于实例中(true),还是存在于原型中(false) alert(p1.hasOwnProperty("name"));//false p1.name="Bob"; p1.job="student";//设置实例属性

Go 面向对象之结构体

青春壹個敷衍的年華 提交于 2019-11-29 06:22:39
#### Go 面向对象之结构体最近有四天没更新公众号,有一些事情耽误了,生活就是这样,总会一些事情让人措不及防; ***山浓水浅,坐看流年***1. Go 也支持面向对象编程(OOP) 但是它和传统的面向对象编程还是有一些区别,并不是纯粹的面向对象编程; 2. Go 中没有类(class), Go 中struct 和其它编程语言中的类有同等地位,所以我们可以理解Go 是基于struct 来实现OOP; 3. Go 面向对象很简洁,没有传统OOP 的继承,方法重载,构造函数等等; 4. Go 面向对象仍有继承,封装,多态的特性,只是它的实现与传统的OOP语言不同; ##### 结构体与结构体变量(实例/对象)的关系图 ---说明: 1. 将一类事物的特性提取出来(比如猫类),形成一个新的数据类型就是一个结构体; 2. 通过这个结构体,可以创建多个变量(实例/对象); 3. 事物可以是猫类,也可以是其它的类...; 案例: package main import "fmt" // 定义一个结构体,类似于类 // 将Cat 的各个字段/属性,放入到结构体中 type Cat struct { Name string Age uint Color string Hobby string } func main(){ // 声明一个Cat 变量,也就是实例 var a1 Cat a1

面向对象设计思想

拈花ヽ惹草 提交于 2019-11-28 23:06:26
本来想去培训的,但是我没有钱,只好自己在网上找视频看。 前段时间,因为一些事,耽误了很长时间,现在再开始学。 想成为一名Java开发工程师,工资7k~9k就足够了。 一、对象用计算机语言对问题域中事物的描述,对象通过属性(attribute)和方法(method) 来分别对应事物所具有的静态属性和动态属性 a、类是用于描述同一类型的对象的一个抽象的概念,类中定义了这一类对象所具有的静态和动态属性。 b、类可以看成一类对象的模板,对象可以看成该类的一个具体实例。 考虑问题时,a、先考虑在这个问题中应该有哪些类和哪些对象       b、再考虑每一种类和对象,应该具有哪些属性和方法       c、最后考虑类和类之间具备什么样的关系(关联、聚合、继承……) 二、对象 a、对象是Java程序的核心,在Java程序中“万事万物皆对象” b、对象可以看成是静态属性(成员变量)和动态属性(方法)的封装体 c、类是用来创建同一类型的对象的“模板”,在一个类中定义了该类所具有的成员变量和方法。 三、Java类的定义 1、引用   a、Java语言总除基本类型之外的变量类型都称之为引用类型   b、Java中的对象是通过引用对其操作的 分析语句:String s = new String("hello world"); String s;//声明了一个String类型的引用变量

python通用编程

放肆的年华 提交于 2019-11-28 19:54:49
python通用编程 第一章: pass 第二章: pass 第三章: pass 第四章:面向对象 面向对象的程序设计的由来 为什么要有面向对象程序设计? 面向对象的程序设计的由来 为什么要有面向对象程序设计? 2 面向对象 3 面向对象 面向对象 第五章:面向对象高级 来源: https://www.cnblogs.com/zhangmingyan/p/11422872.html

面向对象之结构体2

a 夏天 提交于 2019-11-28 13:01:35
创建结构体变量和访问结构体字段 1)方式1-直接声明 案例演示:var person Person 2)方式2-{} 案例演示:var person Person = Person{} func main() {   p2 := Person{}   p2.Name = "tom"   p2.Age = 18   fmt.Println(p2) } 3)方式3-& 案例:var person *Person = new(Person) func main() {   //方式3   var p3 *Person = new(Person)   //因为p3是一个指针,因此标准的给字段赋值的方式   //(*p3).Name = "smith" 也可以这样写 p3.Name = "smith"   //原因是 go的设计者 为了程序员使用方便在底层会对 p3.Name = "smith" 进行处理   //会给p3 加上 取值运算 (*p3).Name = "smith"   (*p3).Name = "smith"   p3.Name = "john"   (*p3).Age = 30   p3.Age = 100   fmt.Println(*p3) } 4)方式4-{} 案例:var person *Person = &Person{} func main() {   /

超详细的Java基础面试题总结

本小妞迷上赌 提交于 2019-11-28 11:24:17
最近在备战面试的过程中,整理一下面试题。大多数题目都是自己手敲的,网上也有很多这样的总结。自己感觉总是很乱,所以花了很久把自己觉得重要的东西总结了一下。 面向对象和面向过程的区别 面向过程:    优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点:没有面向对象易维护、易复用、易扩展 面向对象:    优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 缺点:性能比面向过程低 Java语言有哪些特点? 简单易学; 面向对象(封装,继承,多态); 平台无关性(Java虚拟机实现平台无关性); 可靠性; 安全性; 支持多线程(C++语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而Java语言却提供了多线程支持); 支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的,因此Java语言不仅支持网络编程而且很方便); 编译与解释并存; 什么是字节码?采用字节码的最大好处是什么?什么Java是虚拟机? 先看下java中的编译器和解释器:    Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器