浏览器知识

跨域

跨域的原因 —— 浏览器的同源策略

同源策略是浏览器一个重要的安全策略,它用于限制一个 origin 的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介

同源的定义是两个 URL协议域名(子域名 + 主域名)、端口号 都相同,否则就会出现跨域


h7ml
  • es6
  • es6
大约 15 分钟
编程题

new 运算符

new 运算符原理

  1. 创建一个全新的对象
  2. 为新创建的对象添加 __proto__ 属模拟实现 new 运算符性并指向构造函数的原型对象
  3. 将新创建的对象作为函数调用的 this
  4. 如果构造函数没有返回对象类型,则返回新创建的对象
模拟实现 new 运算符
function myNew() {
  // 获取构造函数
  const Constructor = [].shift.call(arguments);

  // 创建空对象并设置原型
  const obj = Object.create(Constructor.prototype);

  // 绑定 this 并执行构造函数
  const result = Constructor.apply(obj, arguments);

  // 返回构造函数显示返回的值或新对象
  const type = typeof result;
  return result && (type === 'object' || type === 'function') ? result : obj;
}

h7ml
  • es6
  • es6
大约 6 分钟
模块化

什么是模块化?

百度百科中的解释: 模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。

在编程中 模块化是将一个复杂的应用程序,按照一定的规则拆分成若干个文件(代码块),并进行组合。文件内部的数据与实现都是私有的,只是对外暴露一些接口(方法、变量)与其他模块进行通信

模块化的好处

  • 避免命名空间的冲突
  • 提高代码的复用性

h7ml
  • es6
  • es6
大约 5 分钟
es6

es6 知识点

ECMAScript 6 (简称 ES6) 是 JavaScript 语言的下一代标准

ECMAScript 的提案流程

  • Stage 0 - Strawman(展示阶段)
  • Stage 1 - Proposal(征求意见阶段)
  • Stage 2 - Draft(草案阶段)
  • Stage 3 - Candidate(候选人阶段)

h7ml
  • es6
  • es6
大约 23 分钟