面向对象基础一之初体验使用面向对象进行开发

对 JS 中的面向对象的基础进行讲述, 初体验使用面向对象进行开发

主要内容是

  1. 面向对象的概念及特性
  2. 用面向对象的方式解决简单的标签创建实例

一些基础的概念

面向对象

面向对象的概念

  1. 面向对象就是使用对象
  2. 面向对象开发就是使用对象开发
  3. 面向过程就是以过程的方式开发
  4. 面向对象是面向过程的封装

面向对象的特性

  1. 抽象性

    如果需要用一对象来描述一个数据, 那就需要抽取这个对象的核心数据来描述

    • 抽取需要的核心属性和方法
    • 需要在特定情况下,才能明确对象的具体意义
  2. 封装性

    封装就是将数据和功能组合到一起

    • 在 js 中, 对象就是的集合

      • 键值如果是数据(基本数据, 复合数据, 空数据), 就称为属性
      • 键值如果是函数,就称为方法
    • 对象就是将属性和方法封装起来
    • 方法是将过程封装起来
  3. 继承性

    继承性就是自己没有, 别人有, 将别人的拿过来自己用, 并且成为自己的

    • 传统继承基于模板
    • js 的继承基于对象
      在 js 中的简单的继承模式: 混入模式(mix)
      在 jQuerty 中的混入叫做: extend

      var o1 = { name : 'Jhon' };
      var o2 = { age : 19 };
      function mix(o1,o2){
      for(var key in o2){
      o1[key] = o2[key];
      }
      }
      mix(o1, o2);

使用面向过程和面向对象进行标签创建

使用面向过程创建div, 并设置样式

  • 按部就班, 一步一步来
  • 只能一个一个添加属性
  • 如果创建多个div标签, 非常麻烦

    var div = document.createElement('div');
    documet.appendChild(div);
    div.style.width = '200px';
    div.style.height = '200px';
    div.style.backgroundColor = 'red';
    div.style.border = '10px dashed blue';
    ...

使用面向对象创建div, 并设置样式

  • 抽取对象(名词提炼): div, body
  • 分析属性和方法(动词提炼): appendChild, style

    function DivTag(){
    // 注意这里的 this 指的是 通过构造函数创建出来的实例对象
    this.DOM = document.createElement('div');
    appendTo : function(node){
    // this是实例对象, 不是DOM节点, 不能直接使用DOM属性和方法
    node.appendChild(this.DOM);
    };
    css : function(option){
    for(var key in option){
    this.DOM.style[key] = option[key];
    }
    }
    }
    var divTag = new DivTag();
    divTag.appendTo(document.body);
    divTag.css({
    width : '200px',
    height : 200px,
    backgroundColor : 'red',
    border : '10px dashed blue'
    });
  • 这样的使用对象的方式进行创建标签非常方便, 创建多个不同样式的标签也非常轻松
  • 但是这样也有缺点, 不能和 jQuery 一样, 不能进行链式变成, 我们可以这样修改, 在每一个方法后面加上一个return this

        function DivTag(){
    // 注意这里的 this 指的是 通过构造函数创建出来的实例对象
    this.DOM = document.createElement('div');
    appendTo : function(node){
    // this是实例对象, 不是DOM节点, 不能直接使用DOM属性和方法
    node.appendChild(this.DOM);
    return this;
    };
    css : function(option){
    for(var key in option){
    this.DOM.style[key] = option[key];
    }
    return this;
    }
    }
    var divTag1 = new DivTag()
    .appendTo(document.body)
    .css({
    width : '200px',
    height : 200px,
    backgroundColor : 'red',
    border : '10px dashed blue'
    });
    var divTag2 = new DivTag()
    .appendTo(document.body)
    .css({
    width : '400px',
    height : 400px,
    backgroundColor : 'pink',
    border : '10px dashed green'
    });

总结

什么是面向对象

面向对象说白了就是对面向过程进行了封装
比如说:
需求是 一个字符串是 str = 'abcdefg', 找到里面的e,并返回e的索引

  • 使用面向过程的处理办法就是, 遍历字符串, 得到索引

    var str = 'abcdefg';
    for(var i = 0;i < str.length;i++){
    var char = str.charAt(i);
    if(char == 'e'){
    conole.log(i);
    break;
    }
    }
  • 使用面向过程的处理办法就是, 使用indexOf, 得到索引

    var str = 'abcdefg';
    console.log(str.indexOf('e'));

    用生活中吃饭的的例子就可以这样理解:

  • 如果你自己烧, 那就需要(非常的麻烦, 时间有很长)
    1. 买菜
    2. 洗菜
    3. 烧饭烧菜
    4. 收拾
    5. 洗碗
  • 如果是上饭店, 那就非常简单(因为买菜, 洗菜, 烧饭烧菜, 洗碗的工作都是别人帮你完成了)
    1. 吃就行了

JS面向对象使用面向对象进行开发的更多相关文章

  1. python 全栈开发,Day52(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)

    昨日作业讲解: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉, ...

  2. 2018-2019-2 20175306实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2018-2019-2 20175306实验二面向对象程序设计<Java开发环境的熟悉>实验报告 面向对象程序设计-1 实验要求: 参考:> http://www.cnblogs.c ...

  3. Day046--JavaScript-- DOM操作, js中的面向对象, 定时

    一. DOM的操作(创建,追加,删除) parentNode 获取父级标签 nextElementSibling 获取下一个兄弟节点 children 获取所有的子标签 <!DOCTYPEhtm ...

  4. 2018-2019-20175205实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2018-2019-20175205实验二面向对象程序设计<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>< ...

  5. #2019-2020-4 实验二面向对象程序设计《Java开发环境的熟悉》实验报告

    2019-2020-4 实验二面向对象程序设计<Java开发环境的熟悉>实验报告 一.面向对象程序设计-1 ①实验要求: 1.参考 http://www.cnblogs.com/roced ...

  6. 前端 ---JS中的面向对象

    JS中的面向对象   创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或对象字面量创建对象 ...

  7. 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图

    面向对象思想概述.开发设计特征 1:面向对象思想 面向对象是基于面向过程的编程思想. 面向过程:强调的是每一个功能的步骤 面向对象:强调的是对象,然后由对象去调用功能 2:面向对象的思想特点 A:是一 ...

  8. 前端JavaScript(3)-关于DOM操作的相关案例,JS中的面向对象、定时器、BOM、位置信息

    小例子: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉,就可以 ...

  9. 轻松理解JS中的面向对象,顺便搞懂prototype和__proto__

    这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和construcator,这几个概念都是相关的,所以一起讲了. 在讲这个之前我们先来说说类,了解面向对象的朋友应该都知道, ...

随机推荐

  1. 01-Python的介绍_Python编程之路

    首先用一句业内非常出名的话来介绍Python "人生哭短,我用Python" 这也是Python宣传时经常说的一句话 从这句话中,可以非常清楚Python他到底优点在哪里,为什么要 ...

  2. 基于hi-nginx的web开发(python篇)——路由装饰器

    现在,有了起步的基本认识,现在需要一个可以媲美flask或者bottle的简洁易用的路由功能,可以用装饰器写法任意映射 URLs 到代码. 这个,并不难.首先,来一个叫做hi的模块:hi.py: im ...

  3. 一周Maven框架学习随笔

    第一次写博客,可能写得不是很好,但是希望自己持之以恒,以后会更好.也希望通过写博客记录随笔,让自己本身有所收获. 下面是今天的maven总结: maven个人理解中是Maven项目对象模型(POM), ...

  4. 浅谈element-ui中的BEM范式实践

    日常的工作中,我们无时无刻不在和样式打交道.没有样式的页面就如同一部电影,被人随意地在不同地方做了截取. BEM规范应该是对于我们现在前端组件开发中我觉得是最合适的一套范式了.所以,我在自己的日常工作 ...

  5. 第十四周实验报告:实验四 Android程序设计

    20162317袁逸灏 第十四周实验报告:实验四 Android程序设计 实验内容 Android Studio 实验要求 学会使用Android Studio 学习 活动 以及相关知识内容 学习 U ...

  6. Alpha冲刺Day10

    Alpha冲刺Day10 一:站立式会议 今日安排: 由林静完成第三方机构的用户信息管理模块 由张梨贤完成第三方机构的委托授权管理模块 由黄腾飞和周静平完成政府人员模块下风险管控子模块下的核实企业风险 ...

  7. 冲刺No.3

    Alpha冲刺第三天 站立式会议 项目进展 今日团队对CSS与JS的基础知识进行了应用,并对网站的UI设计进行了讨论,对数据库设计进行了进一步的探讨,基本确立了各个表单的结构和内容.分割出项目基本模块 ...

  8. C程序设计-----第1次作业

    一. PTA作业.    在完成PTA作业的时候我没有认真读题.每次都是提交完整代码 6-1(1) #include <stdio.h> //P++等价于(p)++还是等价于*(p++)? ...

  9. Python处理图片缩略图

    CPU 密集型任务和 IO 密集型任务分别选择多进程multiprocessing.Pool.map 和多线程库multiprocessing.dummy.Pool.map import os imp ...

  10. vim配置之taglist插件安装

    上次说了不带插件的vim配置,今天补充两个,来日方长,不定期更新: 首先看一个路径: 下载ctags,将其中的ctags.exe复制到上边目录下边: 地址:https://sourceforge.ne ...