JS学习笔记(三)基础知识概念3

0x00

国赛结束,睡一觉恢复生产力!

0x01 this

主要说的是调用方式

 

1.以函数形式调用:this是window

2.以方法形式调用:this是这个对象

 

通过this来根据调用者的不同改不同的值

0x02 回到对象

0x021 使用工厂方法创建对象

说白了,写一个函数,返回一个新对象

0x022 构造函数创建对象

使用工厂方法创建的对象,使用的构造函数都是object

导致我们无法区分出多种不同类型的对象

之前用的Object()也是一样的意思

加new是构造函数,不加new是普通函数

用同一个构造函数创建的对象能够称为一类对象,也将一个构造函数成为一个

将一个构造函数创建的对象,称为实例

 

使用instanceof来检查

所有的对象都是object的实例         

此处不用return,因为新建的对象已经被设置成函数中的this

this的情况:

构造函数的修改

以上一节的构造函数为基础修改

在构造函数内创建方法,每一次创建对象都会创建一个新的方法,而这些方法都实现一个功能,所以要进行改进

所以可以把这个方法在全局作用域里定义

 

0x023 原型对象

在函数定义在全局作用域中,污染了全局作用域的命名空间

而且定义在全局作用域中也很不安全

 

原型:prototype

这个属性对应了一个对象,也就是我们说的原型对象

如果自己构造函数有了就不看原型了

所以可以把这些对象共有的属性和方法添加到构造函数的原型对象中

 

实例剖析原型对象

所以如果用in,就不能查找这个对象自己的属性了

使用这个方法只有当对象自身中含有属性时,才会返回true

 

套起来了

也不是无穷尽的套娃,直到object对象的原型

如果在object的原型中还没找到,则返回undifined

 

修改to_String方法

一定要修改原型里的tostring

 

这样打印对象可以直接返回tostring

 

垃圾回收(GC)

  

0x03 数组对象

属性在数组中叫做元素

数组的存储性能要比普通对象好,在开发中我们经常使用数组来存储一些数据

 

查看数组的长度:使用length属性来获取数组的长度(元素的个数)

非连续的数组,没有数据的地方会空出来

 

0x031 数组字面量

构造时传值

但是有区别:

数组中的元素可以是任意的数据类型

也能放函数

0x032 数组的四个方法

push()

该方法会将数组新的长度作为返回值返回

pop()

unshift()

shift()

0x033 数组的遍历

用简单的for循环

forEach方法

froEach方法是数组对象的内置方法

0x034 slice方法

几种索引的规则:

这种规则在许多语言中都很常见

0x035 splice方法

splice用于删除数组中的指定元素

可以再插入替换元素

0x036 数组的剩余方法

concat

join

如果不指定则默认逗号,也可以传一个空值

reverse

sort

这两个方法都会影响原数组

添加一个回调函数自定义排序规则

也可以直接return a - b

0x04 函数的方法

call()和apply()

用来修改函数执行时的this

arguments

arguments是封装实参的数组

Date对象

Math对象

0x05 包装类

JS中有3个包装类,可以让我们把基本数据类型转换成对象

一般不主动调用,但是浏览器会自动调用这个包装类

0x06 字符串的相关方法

一些string对象里的方法

在底层,字符串是以字符数组保存的

length

charAt()

返回指定位置的字符

charCodeAt()

获取自定位置字符的编码

fromCharCode()

根据字符编码去获取字符

concat()

作用和加号一样的

indexof()

检索字符串中是否有指定内容

lastIndexOf()

从后往前找

也可以指定第二个参数,指定查找的位置

slice()

也可以指定第二个参数为负数

substring()

 

substr()

第二个参数为常数

split()

如果传一个空串,则会把每个字符都分隔进数组

toUpperCase()和toLowerCase()

变换大小写

0x07 正则表达式

创建正则表达式的对象

正则表达式的方法:

test()

可以加第二个参数,来添加正则表达式的规则

0x071 使用字面量创建正则表达式

var 变量 = /正则表达式/匹配模式

这种写法在许多语言中通用

 

0x072 正则语法

中括号里面的也是或的关系

任意字母

中括号组合起来写

中括号内加^

0x073 字符串和正则相关的方法

字符串方法中,可以传递正则表达式作为参数

 

split()

方法中可以传递一个正则表达式为参数,这样方法将会根据正则表达式去拆分字符串

这个方法即便不指定全局匹配模式,也默认使用全局匹配

search()

search只会查找第一个, 设置了全局也没有用

将正则表达式当作参数传过去

match()

设置全局匹配模式

g:全局匹配

match()会将匹配到的内容封装到一个数组中返回,即使只查询到一个结果

 

replace()

把指定字符串中的指定内容替换成新的内容

可以用来过滤

 

0x074 正则语法2

使用量词

{n}正好出现n次,量词只对前边一个内容起作用

要多个字母匹配加括号

 

{m,n} 出现m-n次

{m,} 出现m次一以上

+ 至少一个,相当于{1,}

* 0个或多个,相当于{0,}

? 0个或一个,相当于{0,1}

 

^ 表示开头(和中括号里的^进行区分)

查找开头是否是a

 

$ 表示结尾

 

特殊情况:

 

以a开头或以a结尾可以这么写

/^a|a$/

0x075 练习:匹配合法手机号

注意开头和结尾一定要限制

 

0x076 正则语法3

点表示任意字符

如果我们只是要匹配单纯的点,可以用反斜杠进行转义

注意:使用构造函数时,由于它的参数是一个字符串,而\需要进行转义

反斜杠的特殊意义

单词边界:

这里是给child前后都加了单词边界,表明child是一个独立的单词

处理一个用户输入

接受一个用户输入

去除空格

注意里面第三行的全局匹配,和或号

邮件的正则

 

所以读正则的时候可以拆开了读

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值