js下 Day13、面向对象
一.对象
什么是对象: 一组无序的属性集合
创建对象两种方式:
对象字面量: var obj = {}
实例化: var obj = new Object()
对象取值:
**[] ( ** 中括号): 变量、数字等不规范的属性名
.(点) : 符合命名规范的属性名
删除对象的属性: delete 对象.属性名
遍历对象**:for(var key in obj){}**
#二.作用域
全局作用域: 全局变量拥有全局作用域,可以在任何地方使用
局部作用域: 局部变量拥有局部作用域,只能在定义的函数内使用
变量提升: 使用var关键字声明的变量会将(var 变量名)提升到当前作用域最顶端,赋值留在原地
函数提升: 函数声明会提升到当前作用域的最顶端
变量提升 > 函数提升
#三.this指向
this在JS中指的是执行上下文环境对象




| 全局中的this | Window |
|---|---|
| 函数中的this | 直接调用 => window |
| 事件处理函数中 => 事件源 | |
| 对象调用 => 对象 | |
| 构造函数中的this => 实例化对象 |
总结: 函数中的this,谁调用指向谁
#四.面向对象
#1. 什么是面向对象
面向对象是一种程序设计模式(编程思想),将对象作为基本单元,将程序和数据封装其中
#2. 为什么使用面向对象
可重用、可维护性好、可扩展、灵活性好
#3. 工厂模式
为什么使用工厂模式: 解决了创建多个相似对象(结构相同)的问题

#4. 构造函数模式
为什么使用构造函数模式: 解决了对象识别问题,区分普通函数和构造函数

构造函数必须通过new运算符来调用
构造函数首字母大写(不是必须,一种规范,用于区分构造函数和普通函数)
#5. 原型模式
在原型对象中定义共有的属性和方法
为什么使用原型模式: 解决了多个对象具有相同的属性或方法被重复创建的问题


prototype => 构造 找 原型
constructor => 原型 找 构造
proto => 实例找原型
构造函数写属性,原型对象写方法
#6. 框架搭建
面向对象三部曲:
1. 构造函数
2. 原型对象
3. 实例化

#五.案例--选项卡三级联动
效果图:

功能思路分析:
1. 数据分析
\1. 对象结构的数据,使用for in 遍历
\2. 属性名是数字,使用[]取值
\3. 省市区的数据没有嵌套,是同级关系,使用code属性关联


2. 省份渲染
\1. 通过 cityData.city拿到省份数据,对象结构用for in遍历
\2. 根据属性名渲染字母分类
\3. 每个分类下是数组,使用map().join(“”) 嵌套渲染省份
\4. 渲染时将省份编码code,通过自定义属性绑定在标签上

3. 城市渲染
1.通过事件委托给省份盒子绑定点击事件
2.点击省份时,拿到标签上的自定义属性code(getAttribute())
3.对象数据用for in渲染
4.渲染时将城市编码code,通过自定义属性绑定在标签上
5.调用选项卡切换方法,传递城市盒子的下标,显示城市盒子

4. 区域渲染
1.通过事件委托给城市盒子绑定点击事件
2.点击城市时,拿到标签上的自定义属性code(getAttribute())
3.对象数据用for in渲染
4.渲染时将区域编码code,通过自定义属性绑定在标签上
5.调用选项卡切换方法,传递区县盒子的下标,显示区县盒子

5. 选项卡切换
\1. 给导航大盒子绑定点击事件,使用委托委托实现选项卡效果
\2. 封装一个公用的且、切换方法
3. 让上一个导航和内容盒子去掉类名(classList.remove),修改初始下标为当前下标(传参得到当前下标),让当前下标的导航和内容盒子加上类名( classList.add() )


#六.今日小结
**1. ** 对象
对象取值:
**[] ( ** 中括号): 变量、数字等不规范的属性名
**. ** (点) : 符合命名规范的属性名
遍历对象**:for(var key in obj){}**
**2.this ** 指向
全局中的this指向window
函数中的this:
直接调用,this 指向window。
在事件处理函数中,this 指向绑定事件的元素。
在对象方法中,this指向调用该方法的对象。
构造函数中, this指向实例化的对象
总结:谁调用指向谁
**2. ** 面向对象
面向对象三部曲: 构造函数 原型对象 实例化
prototype => 构造 找 原型
constructor => 原型 找 构造
proto => 实例找原型
!!!牢记框架
#七.作业 -- 软键盘拖拽
效果图:

功能思路分析:
必做功能点:
\1. 点击文本框时显示键盘
\2. 点击X 或页面其他区域隐藏键盘
\3. 键盘拖拽
\4. 点击键盘中按键将对应内容输入到文本框
扩展功能点:
\1. shift按键的大小写转换
\2. 清空按钮清空文本框内容
js下 Day13、面向对象的更多相关文章
- js下的面向对象
本文记录了一种Javascript的面向对象方法及原理理解,示例代码如下: //构造函数 var MClass = function(value1, value2) { this.member = & ...
- Day046--JavaScript-- DOM操作, js中的面向对象, 定时
一. DOM的操作(创建,追加,删除) parentNode 获取父级标签 nextElementSibling 获取下一个兄弟节点 children 获取所有的子标签 <!DOCTYPEhtm ...
- python 全栈开发,Day52(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)
昨日作业讲解: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉, ...
- 前端JavaScript(3)-关于DOM操作的相关案例,JS中的面向对象、定时器、BOM、位置信息
小例子: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉,就可以 ...
- 轻松理解JS中的面向对象,顺便搞懂prototype和__proto__
这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和construcator,这几个概念都是相关的,所以一起讲了. 在讲这个之前我们先来说说类,了解面向对象的朋友应该都知道, ...
- 轻松理解JS中的面向对象,顺便搞懂prototype和__proto__的原理介绍
这篇文章主要讲一下JS中面向对象以及 __proto__,ptototype和construcator,这几个概念都是相关的,所以一起讲了. 在讲这个之前我们先来说说类,了解面向对象的朋友应该都知道, ...
- 原生JS下拉加载插件分享。
无聊写了一个JS下拉加载插件,有需要的可以下载. // 使用 // new ManDownLoad("#ul","json/load.json",functio ...
- js下拉框
Js下拉框 http://sc.chinaz.com/tag_jiaoben/XiaLaKuang.html
- CSS+JS下拉菜单和纯CSS下拉菜单
下拉菜单 (思路:先把二级定位到屏幕外,鼠标悬停重新定位回来:另一个就是ul浮动,li也浮动) 下拉菜单的一般思路就是把子导航嵌套在无序列表中,把列表定位到屏幕之外,当鼠标悬停在其父列表项上时,重新定 ...
随机推荐
- SHEIN:Java开发面经
SHEIN面经 我觉得除技术外,自信是一个非常关键的点. 一面 自我介绍: 谈谈实习经历: 讲讲你实习的收获: 如何设计规范的接口?(简历上有写,所以问到) 当你需要修改两个月前的代码时,如何去整理以 ...
- Camtasia绿幕素材的视频合成
随着科技和互联网的快速发展,让越来越多的人喜欢上了视频的各项制作,那么怎么让两个视频进行合成并一起播放呢?操作很简单,下面来讲解具体的操作步骤.小编选用的是Camtasia2019版本的视频编辑软件进 ...
- CorelDRAW软件的出血位详解
出血位,一种常见的印刷术语,在印刷品中,设计的图形一般比成品尺寸要大,会加一些延伸,专门用来给生产工艺中的公差范围使用,以避免最后裁切的成品中有白边或是裁到内容.多出来的部分在印刷后要被裁掉,这部分就 ...
- P5656 【模板】二元一次不定方程(exgcd)
还不会 exgcd 的请移步窝的学习笔记,这里只讲怎么搞出烦人的答案. 在 \(a,b\) 两者互质的情况下,二元一次不定方程的通解:\(a(x+db)+b(y+da)=c\). 所以要先将 \(a, ...
- JVM类加载机制详解,建议看这一篇就够了,深入浅出总结的十分详细!
类加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 类加载的时机 遇到new(比如n ...
- java学生简单管理系统
1 //设一个班有n名学生,期末考试5门,编写程序评定学生奖学金 2 514 //要求打印输出一二等奖学金学生的学号,姓名和各科成绩 3 515 //总成绩超过全班总平均成绩20%一等奖学金,超过总平 ...
- LaTeX中的数学公式之矩阵
矩阵的代码及注释: 显示效果:
- VM15 Ubuntu18.04 安装c/c++
输入"su"再输入密码即进入根用户,(gcc是默认安装的,但刚安装完成的系统中的gcc并不能用来开发,还缺少常用的头文件和库文件,还组要安装build-essential 软件包) ...
- 使用paho的MQTT时遇到的重连导致订阅无法收到问题和解决
最近在使用MQTT来实现消息的传输,网上demo很多,这里就不在重复介绍了,直接上代码,百度就能出现一大堆 下面是MQTT实现订阅的主要代码部分 MqttClient client = new Mqt ...
- 20200509_设置笔记本使用有线访问外网同时wifi访问外网
1. 控制面板\所有控制面板项\网络连接 2. wifi的使用的手机热点, dhcp分配的, 不用做配置 3. 笔记本获取到的内网静态地址是192.168.3.11, 网关是192.168.3.254 ...