面试记录
in 默认分类 with 1 comment

面试记录

in 默认分类 with 1 comment

综合


加载方式规范命令特点
运行时加载CommonJS/AMDrequire社区方案,非语言层面的标准。只能在运行时确定模块的依赖关系及输入/输出的变量,无法进行静态优化。
编译时加载es6import语言规格层面支持模块功能。支持编译时静态分析,便于JS引入宏和类型检验。动态绑定。
// 闭包
function A() {
  let str = 'A';
  function B() {
    console.log(str);//A
  }
  return B;
}
let x = A();
x();
// 构造函数
function A() {
  if (!(this instanceof A)) {
    return new A();
  }
}
new A();

防御 XSS 攻击

  1. HttpOnly 防止劫取 Cookie
  2. 用户的输入检查
  3. 服务端的输出检查

防御 CSRF 攻击

  1. 验证码
  2. Referer Check
    3.Token 验证

关于this的题

var num = 10;
var obj = {
   num:8,
   inner: {
       num: 6,
       print: function () {
           console.log("num: "+num+" , this.num: "+this.num);
       }
   }
}
num = 888;
obj.inner.print(); //num: 888 , this.num: 6
var fn = obj.inner.print;
fn(); //num: 888 , this.num: 888, this: Window
(obj.inner.print)(); //num: 888 , this.num: 6
(obj.inner.print = obj.inner.print)(); //num: 888 , this.num: 888 

判断数组

function isArrayFn(value){
 if (typeof Array.isArray === "function") {
   return Array.isArray(value);
 }else{
   return Object.prototype.toString.call(value) === "[object Array]";
 }
}

浏览器事件机制

Responses