原型
-
原型属性: 对构造函数而言, 原型就是 构造函数的 prototype 属性, 常常将其称为 原型属性.
-
原型对象: 针对实例对象而言, 原型就是 实例对象的 原型对象.
-
构造函数,原型,实例三者之间的关系:
--------构造函数中的原型对象(prototype属性)中有一个constructor属性,和构造函数一致,原型对象中的constructor指向当前的构造函数
--------实例对象中的__proto__指向 构造函数中的 prototype -
原型链: 凡是对象都有原型,是一种实例对象与原型对象之间的关系,通过原型对象__proto__联系的。
继承
通过原型链实现继承 :
- 通过修改原型指向实现继承,可以实现属性和方法的继承,但属性会重复问题
- 借用构造函数继承:只能觉得属性继承,并且不重复,但是不能继承方法
- 组合继承:构造函数+原型继承—既可以解决属性继承,也可以解决方法继承
- 拷贝继承:就是将对象中需要共享的属性和方法,直接遍历,复制到另一个对象中
改变this指向
①call
函数名.call(对象,原函数参数) -----修改的同时调用了函数
②apply
函数名.apply(对象,[参数以数组形式存在] ) -----修改的同时调用了函数
③bind
函数名.bind(对象,原函数参数) -----修改了this指向,函数没有被调用, 将会返回结果保存之后,再调用。
高阶函数
简单的理解就是,函数中的参数是 函数,或返回值是 函数,这种函数就是高阶函数。
闭包
在 js 中函数是一个具有变量作用域隔离特性的一个内存结构, 即为一个闭包.
- 闭包解决了:在全局作用域下访问到局部变量
- 闭包的作用:缓存数据,延长作用域
- 闭包的优缺点:缓存数据,而缓存数据回造成内存泄露,一般能不用就不用,使用沙箱
- 闭包模式一:函数模式,函数A中有一个函数B
- 闭包模式二:函数模式,函数A中有一个对象B
沙箱
沙箱就是js中一块完全独立的区域,使用的都是自己独立的属性和方法
js中沙箱的基本格式------ js中 起始就是一个 自执行函数
(function () {
})();
沙箱模式的优势
- 沙箱模式不会再外界暴露任何的全局变量,也就不会造成全局变量污染。 最后,如果需要就给外界暴露一些成员,如 window.num=num;
- 沙箱中的所有数据,都是和外界完全隔离的,外界无法对其进行修改,也就保证了代码的安全性。
正则表达式
正则表达式就是 一个用于查找的 含有 匹配字符串 或 匹配元字符的 字符串。
正则表达式的组成: 由 元字符 或者 限定符 组成的一个式子,详情查看正则表达式
var 变量名= new RegExp(/表达式/);
var 变量名= /表达式/; 变量名可以是 regEx
常用方法,可用于检测传入的字符串是否符合该规则并返回布尔值
- 正则对象.test( 字符串 )-----如果参数字符串中含有 复合 正则匹配的 子字符串, 就返回 true, 否则返回 false
- 字符串.match(正则表达式)-----返回一个数组,存储匹配的值
- 正则表达式对象.exec( 字符串 )-----返回值是数组
- 字符串.replace( 查找字符串, 替换字符串 ) -> 字符串
注意:replace方法是字符串的方法,不是正则对象的方法
①字符类
简单类[abc] 表示该位置可以出现的字符,/[abc]/.test("a"); 返回true,可以是a或b或c
负向类[^abc] 表示该位置不可以出现的字符
范围类[a-e] 表示该位置可以出现的字符的范围
组合类[a-xA-E0-9] 范围类的组合
②边界
^ 会匹配行或者字符串的起始位置
^只有在[]内才表示非 在外边表示开始
$ 会匹配行或字符串的结尾位置
^$在一起 表示必须是这个(精确匹配),必须是我要的那个
@量词 自定义出现的次数放在 {} 中
"*" 重复零次或多次 x>=0
"+" 重复一次或多次 x>=1
"?" 重复零次或一次 x=(0||1)
{n} n次 x=n
{n,} 重复n次或更多 x>=n
{n,m} 重复出现的次数比n多但比m少 n<=x<=m
③括号总结
()表示一组
[]表示一个字符的位置
{}表示次数
常见项目的匹配
匹配国内电话号码:验证座机 /^0\d{2,3}-\d{7,8}$/
匹配姓名:验证姓名 /^[\u4e00-\u9fa5]{2,}$/
匹配腾讯QQ号: /^[1-9]\d{4,10}$/
匹配手机号: /^(13[0-9]|14[57]|15[0-9]|18[0-9])\d{8}$/
匹配邮箱: /^\w+([+-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
更多项目的匹配网上搜索常用正则表达式大全常见项目及正则表达式工具