一、对象
1.对象的功能 :想要存数据的时候写数据 对象就是用来存数据的; 对象可以储存结构非常复杂的数据;
扩展: 基本数据类型:string number undefined null Boolean
引用数据类型: 数组 函数
数组用映射的方式存储数据 包含 key value键值对 是有序结构 key是自动生成自动 递增的东西 eg:var arr = [1,2,3,4,5]
对象是一个复杂映射 是无需自定义结构 可以快速的对数据进行查找; 避免重名的尴尬; 语义化更好了;
2.怎么把数据存入对象之中? 抽象;结构化数据;
对象里面放的抽象的数据 优势:有自定义的名称
拓展: json 属于后端的术语 后端返回给前端的是字符串 json外部用{}包裹
二、this
this指向存在两种情况,一是在普通函数中,二是在构造函数中。this关键字只出现在函数体中。
(一)普通函数:
1.this指向:在函数之中(普通函数),谁是当前函数的调用者(调用者),函数体内this的指向就指向谁
2.所有没有xxx(对象).调用的函数 都是window所属的函数
所有回调函数默认情况下,this指向都为window;
1.如何区分一个函数是普通函数还是构造函数? 看调用方式 是否用new调用;
2.构造函数为了面向对象编程而服务;
3. 构造函数:可以创造自定义对象的函数;
4. instanceof 辨别某个对象来自于哪个构造函数
eg: function Foo(){ };
Foo函数的实例化对象 属于两个构造函数 object / Foo
构造函数构造了一个对象;
5. 如何向这个构造出来的对象(实例对象)编写方法;
eg: function Foo(){
// 构造函数内部,给对象编程,放入属性和方法;
//更改了构造函数内部的this指向;
//this 进行编程
//构造函数其实是对this(实例化对象)进行编程的地方
}
实例化对象都有名字
实例化对象和构造函数内部的this指向是一个对象
构造函数内部的this指向,指向实例化对象,
6.this指向只找第一层函数 ,就近原则
总结:this指向情况
1.普通函数
2.构造函数 1.没有xxx.调用的函数一律指向window 2.就近原则
三、面向对象的工具
1.面向对象的工具:1.构造函数 2.原型对象
2.原型是干嘛的,是公用的。
3.任意函数的原型:prototype;
4.constructor 表明了原型属于哪个函数,可以更改,一般不改
5.__proto__原型指针 原型链的原理
6.把引用类型放在原型之中的好处
js本身有一个找寻机制
原型链 : 根据原型规则进行数据查询
1.实例化对象之中 存在 原型指针
2.对象访问数据的时候 会根据原型链规则进行数据查询(原型链),进行数据查找
访问对象之中一个数据的时候
1.如果有 直接返回
2.如果没有 查看 是否存在原型指针__proto__ 如果没有 undefined
3.如果没有那么沿着指针继续查找 返回原型内的数据
每个实例化对象之中 一定有一根原型指针指向当前构造函数的原型对象
我们不把数组或对象直接放在原型上
原型对象上尽量别放引用类型
在面向对象编程的时候 我们推荐把数据放在构造函数里(确保每个对象的数据来源独立),把方法放在原型之中(确保方法可以复用)
四、http,https ,cookie
http:协议
https耗性能 但安全
二者是前后端交互或通信的协议
1.保证数据完整性 传输结束之后 断开连接
2.保证高性能地数据传输
3.即用即走 缺点:不知道你是谁 无状态协议
因为无状态协议容易造成非常糟糕的用户体验 所以我们要给每个http协议打上标签
谁对cookie有操作权限?
这次http经过的所有人都对cookie有操作权限 前端 后端 ;
CSRF(跨站点请求伪造) XSS (脚本注入) 可能会遭受二者攻击,
加密后放在前端的cookie 叫 tocken
cookie 是 http 的身份牌
GET 只有header,没有body; POST 才有 body;
1.header 部分用来验证
2.body 用来装载内容
一旦在浏览器上设置了cookie 那么这条cookie 就会跟随所有对应的域名的http请求
每个域名都有一套独立的cookie cookie遵循同源策略
cookie的特性
1.时效性
2.cookie是纯文本
3.cookie 大小限制 4kb
4.条数限制 50条
5.同源策略 访问路径是有限制的
cookie的本质 :浏览器创建的一个带有数据的文件
五、cookie操作
API
document.cookie
设置cookie