面向对象1

面向对象

面向对象与面向过程

面向过程

分析出解决问题所需要的步骤,然后用函数吧这些步骤一步一步实现,使用的时候一次调用。

面向对象

找解决问题所需要的事物,并将这些事物根据特征、特点、行为功能做以类别划分,以便于处理和解决问题。

面向对象编程特点

封装

可以执行相同功能的代码块,转换成函数去执行,称为封装。(我们平时所用的方法和类都是一种封装,例如:遇到一段功能代码在很多地方重复所用的时候,我们可以把他们封装为一个功能函数/方法,这样在我们需要的地方直接调用就可以了。)

继承

主要的使用为子类继承父类 (继承父类的功能的特点、行为功能)

多态

理解对象

万事万物皆对象,对象的基本构成包含属性、方法(函数)

类--->根据很多对象的相同停止和行为,划分而成

由对象--->类别(抽象)

由类别--->对象(创建对象---实例化)

对象是一个独立的个体事物,类指定是多个拥有相同属性或行为的对象集合

对象的创建

内置对象

  • 通过JavaScript语言原生的构造方法(构造函数),实例化一个新的对象。
    var str=new String('实例化steimg');
    var str1="直接赋值的String";
    var fn=new function();
    var arr=new Array();
    var obj=new Object();
    // 通过内置对象创建对象
    var p1=new Object();
    p1.name='123';
    p1.sex='男'
    p1.fly=function(){
        alert('对象的行为方法');
    }

字面量创建对象(使用JSON)

  • JSON是一种轻量级的数据交换格式,易于阅读易于编写、易于解析
    var booksIbfo=[{name:'aaaa',price:123},{name:'aaaa',price:123},{name:'aaaa',price:123},]
    var person={name:123,sex:'男',fly:function(){}}

工厂模式

  • 工厂模式(Factory Pattern)是Java中最常用的设计模式之一。
  • 优点:
    1.创建对象只要知道名称就ok
    2.扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以
    3.屏蔽产品的具体的实现,调用者只关心产品调用的 接口
  • 缺点:
    1.每增加一个产品时,都需要增加一个具体类和对象实现工厂
    2.系统中类的个数成倍增加。
    function creterWolf(name,age,job){
        var wolf=new Object();
        wolf.name=name;
        wolf.age=age;
        // wolf.job=function(){
        //     console.log('工作');
        // };
        wolf.job=job;
        return wolf;
    }

    var newObj=creterWolf('','','');

构造函数

  • 构造函数于其他函数的唯一区别,就在于调用他们的方式不同。构造函数不存在定义构造函数的特殊语法。任何函数,只要通过new 存在符来调用(实例化对象)。
  • 构造函数的问题,在于每个方法都要在每个实例上创新一遍
    function Person(name,age,job){
        this.name=name;
        this.age=age;
        this.job=job;
        this.sayHi = function() {
            alert('123');
        }
    }

    function Student(){

    }

    var obj1=new Person('','','');

prototype原型

  • 原型是(类)的公共方法
  • 我们每创建一个函数都有一个prototype原型(原型)属性
  • 一个用来给类的对象添加方法的 方法。使用prototype属性,可以给动态的添加方法,以便于实现“继承”的效果。
    function Person(name,age,job){
        this.name='aa';
        this.typename='人';
        this.sayHi = function() {
            alert('123');
        }
    }

    Person.prototype.typename='人';
    Person.prototype.sayHi = function() {
            alert('123');
        }

    var p1= new Person();

###轮播图
1.大图展示区
2.图片列表
3.左右移动按钮
4.放大镜展示区
类:
图片列表
对象:
大图展示区,放大镜展示区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lx610321

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值