浅尝一下JS高级的理论吧

115 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情。 一、面向对象的介绍

面向对象 : 是一种注重结果的 思维方式
面向过程 : 注重的是过程
面向对象 : 注重的是结果
2.面向对象 本质是 面向过程的封装

1.面向过程 : 注重的是过程 (代码冗余) 面向对象 : 注重的是结果
使用全局函数 : 就会导致全局变量污染
使用对象 : 解决变量污染

今后工作中,如果遇到一个需求,先在网上去找有没有专业的对象来解决需求。如果有就直接使用,没有就自己写
1.别人写好的对象 : 优点:效率高 缺点:维护不便
2.自己写对象 : 优点:便于维护 缺点:效率低

二、内置对象
1、array对象
arr.concat(数组)连接数组, 返回值是连接后的数组
应用: 上拉加载下一页,需要将下一页的数组连接到后面

arr.join('分隔符') : 把数组中的每一个元素连接成字符串
应用: 把数组元素拼接成字符串在页面显示。 例如 歌手 ['周杰伦','温岚'] ->周杰伦&温岚

arr.reverse() : 翻转数组

arr.sort() : 数组排序

numArr.sort( function(a,b){
  // return a-b//从小到大
return b-a//从小到大
        } )

2、string对象

str.length : 长度

str[下标] : 获取某个字符

str.indexOf('字符串') : 获取 ‘字符串’首字母 在str中的下标
如果存在,则返回首字母下标。 如果不存在则返回固定值 -1
应用场景: 可以判断一个字符串 在不在str中

str.split('分隔符') : 以分隔符 分割str, 分割的每一个部分放入数组中
应用场景 : 解析url中的参数

str.substr(下标,长度) : 从'下标'开始截取'长度'的字符

大小写转换 : (中文没有大小写)
'adaAFSsdfsdSDFS'.toLocaleUpperCase()转大写
'adaAFSsdfsdSDFS'.toLocaleLowerCase()转小写

三、原型对象

工厂函数 : 函数的作用是用于 创建对象 **重点 构造函数的作用与工厂函数一致,也是用于创建对象。 但是构造函数代码更简洁。
构造函数 : 使用new调用一个函数, 这个函数叫做构造函数
new工作原理4个流程
(1)创建空对象
(2)this指向这个对象
(3)对象赋值
(4)返回这个对象 **

new注意点 : 如果手动在构造函数中return
return 值类型 : 无效,还是返回new创建的对象
return 引用类型 : 有效,覆盖new创建的对象

原型对象:使用对象 : (1)解决内存浪费 (2)解决变量污染
任何函数在创建的时候, 系统会自动创建一个与之对应的对象,称之为原型对象。

函数.prototype.属性值 = 函数等等 创建的前提条件是创建函数,声明一个函数就给你一个原型,只为这个函数服务,一夫一妻

1构造函数
2Prototype:原型对象

实例对象可以无条件调用原型对象

constructor属性, constructor : 属于原型对象,指向构造函数;可以让实例对象知道自己是被哪个构造函数创建的

构造函数 、 原型对象 、 实例对象 三者之前的关系
(1) prototype : 属于构造函数, 指向原型对象
* 解决构造函数内存浪费 + 变量污染
(2) proto : 属于实例对象, 指向原型对象
* 让实例对象直接访问原型的成员
(3) constructor : 属于原型对象,指向构造函数
* 可以让实例对象知道自己是被哪个构造函数创建的

四、静态成员与实例对象

静态成员 : 属于函数的成员
实例成员 : 属于实例对象的成员

静态方法
获取对象所有的属性值 : Object.values( 对象名 )

实例成员
对象名.对象值