前端面试总结和复习

在这里插入图片描述

安全部分

1. xss攻击

大多数通过js脚本注入,攻击数据库,获取cookie等。
==解决: ==

  1. 输入检查
  2. 服务端输出检查
  3. httpOnly(设置后能让js脚本无法获取到cookie信息)

2. CSRF 跨站请求伪造

冒充受信任用户,向服务器发送非预期请求的攻击方式。例如,这些非预期请求可能是通过在跳转链接后的 URL 中加入恶意参数来完成:
==解决: ==

  1. token
  2. 验证码
  3. referer check(同源检查)

同源策略: 同源是指"协议+域名+端口"三者相同

JS相关

1. js内存机制和回收机制

内存机制:
堆: 存复杂对象Object
栈: 存变量,null undefined boolean number string symbol
回收机制:

  1. 引用计数: 看数据是否还被引用,没有引用则回收(缺点:循环引用中无法释放。)(早年间ie用)
  2. 标记清除: 从根部(window)出发看是否还能到达某个对象,能到达则被需要,不能则释放

2. dom事件中target和currenttarget

**target: ** 指获取事件的目标(真正的发生事件的dom)
currenttarget: 指正在发生事件的元素(如:事件委托,currenttarget指向父元素,target指向子元素)

两者只有在目标阶段才是相等的

3. 原型和原型链:

原型: 每个js对象创建时,就会与一个原型对象相关联,从这原型对象中继承属性。
原型链: 试图引用对象的某个属性时,会到原型里寻找这个属性,这种实例和原型的关系叫做原型链。

proto每个对象都会有一个proto属性,指向该对象的原型。

prototype 函数对象才有的属性,指向该函数的原型。

construtor 每个原型对象都有的属性,指向关联的构造函数

4. 继承:

  1. 原型链继承
    缺点:
    1. 来自原型上的所有属性会被实例所共享。
    2. 子类无法向父类传参
  2. 构造函数继承
    解决了原型链继承中子类实例共享父类引用属性的问题。
    缺点:
    函数复用问题。(方法属性都在构造函数中定义)
  3. 组合继承
    缺点:
    两次调用了父类构造函数,造成了不必要的消耗。
function Person(){
    this.type="Person"
}
Person.prototype.getType=function () {
    return this.type
}

function Student(){
    Person.call(this)   // 第一次调用
    this.occupation="Student"
}
Student.prototype=new Person() // 第二次调用
Student.constructor=Student
  1. 寄生组合继承
    解决组合继承调用两次父类的问题
function inheritPrototype(subType,superType){
    var prototype = Object(superType.prototype);  //创建对象
    prototype.constructor = subType;              //增强对象
    subType.prototype = prototype;                //指定对象
}

function SuperType(name){
    this.name = name;
    this.colors = ["red","blue","green"];
}

SuperType.prototype.sayName = function () {
    alert(this.name);
};

function SubType(name,age){
    SuperType.call(this,name);

    this.age = age;
}

inheritPrototype(SubType,superType);

SubType.prototype.sayAge = function () {
    alert(this.age);
};

防抖和节流

函数防抖(debounce):
在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时;典型的案例就是输入搜索:输入结束后n秒才进行搜索请求,n秒内又输入的内容,就重新计时。

函数节流(throttle):
规定在一个单位时间内,只能触发一次函数,如果这个单位时间内触发多次函数,只 有一次生效; 典型的案例就是鼠标不断点击触发,规定在n秒内多次点击只有一次生效。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值