面对对象的程序设计初探总结

对象概念:对象就是无序属性的集合

prototype:这个属性是指针,指向一个对象。通过调用构造函数对象而创造的对象实例的原型对象。

主要几个类型用法

一.工厂模式

(空对象,Object是所有对象的祖先)
   
  var obj = new Object();

console.info(obj);
  obj.name = "flash boy";

console.info(obj);
 
  function createPerson(name) {
   var o = new Object();
   o.name = name;

return o;(o这个变量存了一个地址,把地址返回给p)
  }
  var p = createPerson("洋洋");

console.info(p);

二.构造函数

function Student(name) {
   this.name = name;
  }
  var stu = new Student("张三");
——————————————————————————————————————————————————————————————————

工厂模式和构造函数的区别:
 1.首字母小写
 2.函数中没有使用this
 3.使用的时候没有用new
——————————————————————————————————————————————————————————————————

三.构造原型方式(套路)

function Student(name) {
   this.name = name;
  }
  Student.prototype.study = function() {
   console.info(this.name + "");
  }

var stu = new Student("");
  stu.study();
——————————————————————————————————————————————————————————————————
  创建类
  1.属性全部放在构造函数里面
  2.方法写在外面(prototype)
——————————————————————————————————————————————————————————————————

四.借用构造函数

function People(name, age, sex) {
   this.name = name;
   this.age = age;
   this.sex = sex;
   this.sleep = function() {

}
  }
  People.prototype.study = function() {

}
  
  function Student(name, age, sex) {
   
   
   People.call(this, name, age, sex);
  }

var stu = new Student("张三", 23, "女");
  console.info(stu.name);
  console.info(stu);
——————————————————————————————————————————————————————————————————
    People:构造函数
    call():调用People,相当于People()
    this:this表是该引用本身(我)
——————————————————————————————————————————————————————————————————
五.原型模式

function Person() {

}
——————————————————————————————————————————————————————————————————
  运行完以上代码后,相当于执行了一个Person.prototype = new Object();

prototype是Person函数对象的属性,
   它指向了一个对象(就是一个引用),
   它指向的这个对象中的所有的属性跟方法,是每个实例所公用。
——————————————————————————————————————————————————————————————————  
  Person.prototype.name = "name";
  Person.prototype.age = 18;

var p1 = new Person();
  var p2 = new Person();

console.info(p1.name);
  console.info(p2.name);
  console.info(p2.age);
  
六.原型链(重要)
利用原型让一个引用类型继承另一个引用类型里的属性和方法。

父亲
  function Father(name) {
   this.fatherName = name;
  }
  Father.prototype.age = 18;

var ft = new Father("父亲");
  console.info(ft.age);
  console.info(ft.fatherName);
——————————————————————————————————————————————————————————————————

儿子
  function Son(name) {
   this.sonName = name;
  }
  Son.prototype = new Father();

//每一个对象的_proto_都来自于构造函数的prototype属性
  var sn = new Son("儿子");
  console.info(sn.age);
  console.info(sn);
七.原型链继承(重要)
继承的好处是:复用代码

function Person(name) {
   this.name = name;
   this.sleep = function() {

}
  }

function Student(name) {

}
  //下句代码表继承
  Student.prototype = new Person();

var stu = new Student();
  stu.sleep();
——————————————————————————————————————————————————————————————————
1.普通对象都有_proto_

2.函数都有prototype

3._proto_是来源于prototype

4.如果自己没有该属性,则沿着_proto_往上找
———————————————————————————————————————————————————————————————————
八.组合继承(套路)

function Father(name) {
   this.name = name;
  }
  Father.prototype.lookBook = function() {
   console.info(this.name + "在看书");
  }

function Son(name, age) {
   //继承属性,继承不了prototype的东西
   Father.apply(this, [name, age]);//或call
   this.hobby = "打游戏";//这个写在哪里都无所谓
  }
  //继承方法method
  Son.prototype = new Father();
  //新的方法必须写在继承之后
  Son.prototype.playPiano = function() {

}

var son = new Son("李四", 22);
  son.lookBook();

时间: 2024-10-20 21:29:21

面对对象的程序设计初探总结的相关文章

Day-8: 面对对象编程

面对过程的程序设计方法意在将函数分成子函数,再依次调用这些函数来解决问题. 而面对对象的程序设计方法,来源于自然界,类是实例的抽象,实例是类的具体.自定义出来的对象是类,而所有的数据都可以看成是对象,因此解决问题的方法是靠对象自己处理消息和相互传递消息.使用时,首先考虑的是需要创建什么样的对象,对象中有怎么样的属性,要实现什么功能(成为方法). 面向对象的抽象程度比函数要高,因为一个class中既包含数据,又包含操作数据的方法.其中,数据封装.继承和多态是面向对象的三大特点. 创建类时,clas

JAVA程序设计(07.3)-----面对对象设计 时钟

1.面对对象设计 时钟的类  3种录入方式(重载) package com.lovo; import java.text.DecimalFormat; import java.util.Calendar; /** * 时钟 类 * @author Abe * */ /** * 属性, 小时,分钟,秒 * * @author Abe * */ public class Clock { private int hour; private int min; private int sec; /** *

初遇面对对象

问题一:为什么要出现面对对象的语言,用来解决什么样的问题? 所有的程序设计语言都提供抽象,汇编语言是对底层机器的抽象,但仍要求程序员按计算机的结构去思考,而程序员要做的必须要能在机器模型和实际上要解决的问题的模型建立联系.(实际上是一个建模的过程)早期是对要解决的问题进行建模,这就是面对过程的,但是缺陷很快就被发现,它所编写的程序难以维护或者说维护费用昂贵.面对对象的方法为程序员提供了在问题空间中表示各种事物元素的工具.好处是:当我们描述解决方案的代码的时候,也就是在表达该问题的文字.使得程序员

python篇1.12---面向对象的程序设计

面对过程的程序设计的核心是 过程(流水线式思维),过程即解决问题的步骤,面向过程的是设计就好比进行设计好一条流水线,考虑周全,什么时候处理什么东西. 优点:极大的降低了程序的复杂度 缺点:一套流水线或者流程就是 用来解决一个问题,生产汽水的流水线无法生产汽车,即便能,也得是大改,改一个组件,牵一发动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux,git,以及Apache HTTP Server等. 面向对象的程序设计的核心是  对象(上帝式思维),要理解对象为何物,必须把自

骑士计划-python全栈 15 面对对象初识

初识面向对象: 面向过程: 优点:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可 缺点:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身 应用场景:一旦完成基本很少改变的场景.例Linux内核,Git以及apcaApache HTTPserserver等 面向对象: 优点:解决了程序的可扩展性,对某一个对象单独修改,会立刻反映到整个体系中,例:对游戏中一个人物参数的特征和技能修改都很容易 缺点:可控性差(结果预测性差),无法向面向过程的程序设计流水线式的可以很精准的预

Python - 面对对象(其他相关,异常处理,反射,单例模式,等..)

目录 Python - 面对对象(其他相关,异常处理,反射,等..) 一.isinstance(obj, cls) 二.issubclass(sub, super) 三.异常处理 1. 异常处理 2.异常种类 3.异常其他结构 4.主动触发异常 5.自定义异常 6.断言 四.反射 五. 单例模式 Python - 面对对象(其他相关,异常处理,反射,等..) 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 class Foo(object): pass ob

Python - 面对对象(基础)

目录 Python - 面对对象(基础) 一. 概述 二. 创建类和对象 三. 面向对象三大特征 封装 继承 多态 Python - 面对对象(基础) 一. 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发"更快更好更强..." 面向过程编程(Object Oriented Programming,OOP,面向对象程序设计) 最易被初学者接受,其往往用一长段代码来实现指定功能,开发

跟着百度学PHP[4]OOP面对对象编程-7-OOP的一些关键子讲解

面对对象常用的一些关键子:http://www.cnblogs.com/xishaonian/p/6146794.html排版不是很好望见谅. THE END 跟着百度学PHP[4]OOP面对对象编程-7-OOP的一些关键子讲解

跟着百度学PHP[4]OOP面对对象编程-5-内部引用$this

$this就是对象内部代表这个对象的引用 可以调用被封装的方法或者属性! <?php class Person{ private $name; private $age="21"; var $sex; function play(){ echo "他正在玩儿呢"; } private function Hello(){ //使用private封装hello方法.该方法不可直接调用.但是可以在内部使用$this调用. echo "这个是被封装的内容&q