代码改变世界

Once more

2018-11-19 21:52  户王山而  阅读(360)  评论(0编辑  收藏  举报

一、对象

 

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的本质    :浏览器创建的一个带有数据的文件