1.什么叫js
js是一门基于对象的、事件驱动的,解释性脚本语言
2.js的组成
- ECMAScript js的语法标准
- DOM:document object model html文档 对象 模型 DOM提供了一些操作html文档的方法
- BOM:browser object model 浏览器 对象 模型 BOM提供了一些操作浏览器的方法
3.js的三种引用方式
- 行内样式
- 内部引用:将代码写在script标签中
- 外部引用:使用script的scr属性引入外部js文件
4.数据类型
- 基本数据类型(值)
1)数字 number
2)字符串 string
3)布尔 boolean true(真)|false(假)
4)undefined 未定义 变量声明未赋值
5)null 值为空 空指针/空地址 - 复杂数据类型(引用)
1)数组 是特殊的对象 因此typeof之后得到的是object
2)对象
3)函数
5.预解析
6.数组的排序算法
1)选择排序法:使用当前数组项和后面的所有数组项进行比较,找出最小项,放在当前位置,依次类推,就可以将数组从小到大排列
2)冒泡培训法:相邻两个数组项,两两进行比较,如果后一个比前一个小,则交换两者的位置,这样也可以从小到大排列
3)数组自带的排序方法:sort
数组.sort()
7.面向对象三大基本特征:
1)封装
2)继承
3)多态
8.面向对象创建
1)字面量创建
var obj = {
name:‘lx’,
sex:‘man’,
say:‘qqq’
}
2)实例创建:代码冗余
var obj = new Object();
obj.name = ‘lx’;
obj.sex = ‘man’;
obj.say =function(){
console.log(‘aaa’);
}
缺点:每次创建对象都需要重新实例化(new),之后再绑定属性
3)工厂模式:工厂模式创建对象其实就是把实例创建对象封装为了一个函数
var createPerson = function(name,sex,age){
var obj = new Object();
obj.name = name;
obj.sex = sex;
obj.age = age;
return obj;
}
缺点:结构不明确 工厂模式this指向window,因此某些时候需要使用this来操作对象,就无法实现
4)构造函数创建对象
1)构造函数创建对象浪费内存
2)函数名首字母大写,使用this添加属性和方法,调用的是否前面必须加new
3)构造函数的执行过程:
1)js隐式创建空对象 obj{}
2)js隐式将构造函数的this指向obj空对象
3)使用this给obj空对象添加属性和方法
4)js隐式返回绑定好属性的obj
4)构造函数中this指向创建出来的this
5)原型prototype创建对象:不能传参
6)混合式创建对象
将需要传参的属性 使用构造函数给对象绑定
将不需要传参的属性 使用原型给对象继承
优势:可以在最大程度上节省计算机内存,可以兼顾传参的效果
推荐使用
9.面向对象的继承方式
1)原型链继承
2)对象冒充继承
3)混合式继承
10.响应状态码
1. 200: 客户端请求, 和服务器成功做出响应
2. 301: 重定向, 资源被重定向到一个***永久性***的地址上, 资源的原始url可能无法访问
3. 302: 重定向, 资源被重定向到一个***临时性***的地址上, 资源的原始url还在
4. 400: 语义错误, 无法被服务器理解, 请求参数有误
5. 401: 请求需要用户验证, 包含了 Authorization 证书, 但是被服务器拒绝了
6. 403: 服务器已经理解请求, 但是拒绝执行它 无权限
7. 404: 请求url不存在 (一般常见于请求路径拼写错误)
8. 500: 服务器遇到了一个未曾预料的请求, 一般出现在后台代码报错
9. 502: 网关或者代理服务器请求时, 从服务器接收到了一个无效响应
10. 503: 服务器过载, 当前无法完成响应, 拒绝客户端连接
11. 504: 网关或者代理服务器请求时, 等待响应超时了
11.jQuery多库共存
1.使用jQuery.noConflict()方法,使得jQuery让出$
2.使用匿名函数自执行的方式 重新让jQuery可以使用$
(function($){
KaTeX parse error: Expected '}', got 'EOF' at end of input: … console.log();
})
})(jQuery)
12.严格模式
1)变量必须写var
2)this不能指向window
3)eval有独立的作用域