2020年2月5日
摘要: 因为浏览器出于安全考虑,有同源策略。也就是说,如果协议、域名或者端口有一个不同就是跨域,Ajax 请求会失败。 那么是出于什么安全考虑才会引入这种机制呢? 其实主要是用来防止 CSRF 攻击的。简单点说,CSRF 攻击是利用用户的登录态发起恶意请求。 也就是说,没有同源策略的情况下,A 网站可以被任 阅读全文
posted @ 2020-02-05 15:04 蒸汽小工人 阅读(134) 评论(0) 推荐(0) 编辑
摘要: Promise Promise 翻译过来就是承诺的意思,这个承诺会在未来有一个确切的答复,并且该承诺有三种状态,分别是: 等待中(pending) 完成了 (resolved) 拒绝了(rejected) 这个承诺一旦从等待状态变成为其他状态就永远不能更改状态了,也就是说一旦状态变为 resolve 阅读全文
posted @ 2020-02-05 15:01 蒸汽小工人 阅读(149) 评论(0) 推荐(0) 编辑
摘要: Generator 算是 ES6 中难理解的概念之一了,Generator 最大的特点就是可以控制函数的执行 你也许会疑惑为什么会产生与你预想不同的值,接下来就让我为你逐行代码分析原因 首先 Generator 函数调用和普通函数不同,它会返回一个迭代器 当执行第一次 next 时,传参会被忽略,并 阅读全文
posted @ 2020-02-05 14:55 蒸汽小工人 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 好处 解决命名冲突 提供复用性 提高代码可维护性 立即执行函数 立即执行函数 (function(globalVariable){ globalVariable.test = function() {} // ... 声明各种变量、函数都不会污染全局作用域 })(globalVariable) AM 阅读全文
posted @ 2020-02-05 14:53 蒸汽小工人 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 组合继承 组合继承是最常用的继承方式, 核心 :是在子类的构造函数中通过 Parent.call(this) 继承父类的属性,然后改变子类的原型为 new Parent() 来继承父类的函数。 优点 :在于构造函数可以传参,不会与父类引用属性共享,可以复用父类的函数 缺点 :就是在继承父类函数的时候 阅读全文
posted @ 2020-02-05 14:50 蒸汽小工人 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 一张图图能让你彻底明白原型和原型链 原型链就是多个对象通过 __proto__ 的方式连接了起来。为什么 obj 可以访问到 valueOf 函数,就是因为 obj 通过原型链找到了 valueOf 函数。 总结以下几点: Object 是所有对象的爸爸,所有对象都可以通过 __proto__ 找到 阅读全文
posted @ 2020-02-05 14:45 蒸汽小工人 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 对于 == 来说,如果对比双方的类型不一样的话,就会进行类型转换 假如我们需要对比 x 和 y 是否相同,就会进行如下判断流程: 首先会判断两者类型是否相同。相同的话就是比大小了 类型不相同的话,那么就会进行类型转换 会先判断是否在对比 null 和 undefined,是的话就会返回 true 判 阅读全文
posted @ 2020-02-05 14:40 蒸汽小工人 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 浅拷贝 1、Object.assign let a = { age: 1 } let b = Object.assign({}, a) a.age = 2 console.log(b.age) // 1 2、展开运算符 ... let a = { age: 1 } let b = { ...a } 阅读全文
posted @ 2020-02-05 14:38 蒸汽小工人 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 可能会发生多个规则同时出现的情况,这时候不同的规则之间会根据优先级最高的来决定 this 最终指向哪里。 首先,new 的方式优先级最高,接下来是 bind 这些函数,然后是 obj.foo() 这种调用方式,最后是 foo 这种调用方式,同时,箭头函数的 this 一旦被绑定,就不会再被任何方式所 阅读全文
posted @ 2020-02-05 14:31 蒸汽小工人 阅读(139) 评论(0) 推荐(0) 编辑
摘要: JS 中类型转换只有三种情况,分别是: 转换为布尔值 转换为数字 转换为字符串 转Boolean 在条件判断时,除了 undefined, null, false, NaN, '', 0, -0,其他所有值都转为 true,包括所有对象。 对象转原始类型 对象在转换类型的时候,会调用内置的 [[To 阅读全文
posted @ 2020-02-05 14:11 蒸汽小工人 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 进程与线程 什么是线程?讲到线程,那么肯定也得说一下进程。本质上来说,两个名词都是 CPU 工作时间片的一个描述。 进程描述了 CPU 在运行指令及加载和保存上下文所需的时间,放在应用上来说就代表了一个程序。线程是进程中的更小单位,描述了执行一段指令所需的时间。 把这些概念拿到浏览器中来说,当你打开 阅读全文
posted @ 2020-02-05 14:01 蒸汽小工人 阅读(92) 评论(0) 推荐(0) 编辑
摘要: V8 实现了准确式 GC,GC 算法采用了分代式垃圾回收机制。因此,V8 将内存(堆)分为新生代和老生代两部分。 新生代算法 新生代中的对象一般存活时间较短,使用 Scavenge GC 算法。 在新生代空间中,内存空间分为两部分,分别为 From 空间和 To 空间。在这两个空间中,必定有一个空间 阅读全文
posted @ 2020-02-05 13:53 蒸汽小工人 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 原因 因为 JS 采用 IEEE 754 双精度版本(64位),并且只要采用 IEEE 754 的语言都有该问题。 计算机是通过二进制来存储东西的,那么 0.1 在二进制中会表示为 // (0011) 表示循环 0.1 = 2^-4 * 1.10011(0011) 我们可以发现,0.1 在二进制中是 阅读全文
posted @ 2020-02-05 13:52 蒸汽小工人 阅读(467) 评论(0) 推荐(0) 编辑
摘要: instanceof 可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是能找到类型的 prototype。 function myInstanceof(left, right) { let prototype = right.prototype left = left.__prot 阅读全文
posted @ 2020-02-05 13:48 蒸汽小工人 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 、Cookie 1. Cookie的来源 Cookie 的本职工作并非本地存储,而是“维持状态”。 因为HTTP协议是无状态的,HTTP协议自身不对请求和响应之间的通信状态进行保存,通俗来说,服务器不知道用户上一次做了什么,这严重阻碍了交互式Web应用程序的实现。在典型的网上购物场景中,用户浏览了几 阅读全文
posted @ 2020-02-05 13:46 蒸汽小工人 阅读(1720) 评论(0) 推荐(0) 编辑
摘要: 在调用new的过程中会发生以上四件事情: 1.新生成了一个对象 2.链接到原型 3.绑定this 4.返回新对象 function create() { let obj = {} //创建一个新对象 let Con = [].shift.call(arguments)//拿到arguments的第一 阅读全文
posted @ 2020-02-05 13:15 蒸汽小工人 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 1、pattern:写正则,但是需要和form表单连着用 2、WebSocket “网络套接字”, 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 阅读全文
posted @ 2020-02-05 12:33 蒸汽小工人 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 响应式实现的原理 如何监控数据的变化:两种方法 Vue 2.x defineProperty(es5) Vue 3.x Proxy(es6) 语法:Object.defineProperty(参数1,参数2,参数3) 参数1:目标对象 参数2:需要修改或者添加的属性名 参数3:目标对象属性的一些特征 阅读全文
posted @ 2020-02-05 12:09 蒸汽小工人 阅读(259) 评论(0) 推荐(0) 编辑