参考:
# react
react bind方法的实现原理 参考:面试官问:能否模拟实现JS的bind方法 (opens new window)
- bind是Function原型链中的Function.prototype的一个属性
- bind会返回一个跟原函数一样的函数
- 调用bind函数的this指向bind的第一个参数
# vue
- vue面试题 (opens new window)
- 双向绑定原理 参考: (opens new window)
Vue 是通过数据劫持结合发布订阅模式来实现双向绑定的
- Object.defineProperty:数据劫持,get 和 set
- Observer 监听器:用来监听属性的变化通知订阅者
- Watcher 订阅者:收到属性的变化,然后更新视图
- Compile 解析器:解析指令,初始化模版,绑定订阅者
# 原生js
参考阮一峰 学习Javascript闭包(Closure) (opens new window)
- 什么是闭包
闭包就是能够读取其他函数内部变量的函数
闭包的原文是 Closure,跟「包」没有任何关系,闭包常常用来「间接访问一个变量」。
function foo(){
var local = 1;
function bar (){
local++;
return local;
}
return bar;
}
var result = foo();
result();
# 前端安全
- 什么是xss攻击 黑客想尽一切方法,将一段脚本内容放到目标网站的目标浏览器上解析执行
危害:
- 窃取网页浏览中的cookie值
- 劫持流量实现恶意跳转
防范方法:
- 过滤所有 HTML JS CSS标签,利用 escapeHTML 方法
- 对特殊符号进行转义
- 限制输入长度