面试中常问的问题

148 阅读2分钟

call,apply,bind异同点

promise

  • promise的几种状态,对promise的理解
  • 用promise链式调用解决回调地狱问题
    • 在第一个请求之后要用return返回promise对象
    • 外面继续使用.then()进行成功操作,后面可以继续点catch()

跨域

  • jsonp 跨域
    • 需要服务端支持
    • 只能发送get请求
  • cors跨域资源共享,授权
  • 代理服务器
    • 同源策略只针对于浏览器,不针对于服务器

继承

  • class中的继承
class Person{
    constructor(name,sgae){
        this.name = name
        this.age = age
    }
    say(){
        console.log(this.name,"年龄为",this.age,的人正在说话)
    }  
}
class Teacher extends Person{
    contructor(name,age){
        super(name,age)
    }
    attendClass(){
        console.log(this.name,"年龄为",this.age,'的人正在上课')
    }
}
let teacher = new Teacher('jack',22)
teacher.say() //jack 年龄为 22 的人在说话
teacher.attendClass //jack 年龄为 22 的人正在上课
  • 构造函数的继承
    • 拷贝继承
function Person(name,age){
   this.name = name
   this.age = age
   say = function(){
       console.log(this.name,"年龄为",this.age,的人正在说话)
   }
}
Person.prototype.say=function(){
   console.log(this.name,"年龄为",this.age,的人正在说话)
}
function Teaaher(name,age){
   Person.call(this)  //改变this指向
}

原型、原型链

  • 原型:对象固有的__proto__属性
  • 原型链:多个原型通过隐式__proto__连接起来形成的一种链式结构
  • 原型链作用:当我们访问一个对象的属性和方法时,如果这个对象的内部不存在这个方法或属性,那么就会去原型链上查找,直到根null为止。
  • 特点:JavaScript对象时通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型是,与之相关的对象也会继承这一改变。

原生的Ajax

  • ajax 一种异步无刷新技术
  • 创建XMLHTTPRequest对象
  • 调用open方法传入三个参数(请求方式,url,同步/异步)
    • get参数的参数放在url地址后
    • post参数的参数放在请求包体中
  • 调用send([post的参数])方法传递参数
    • send中包含post请求的参数
  • 监听onreadystateChange事件,当readystate为4时返回responseText

get&post区别

  • 安全性
  • 参数类型
  • 传输数据大小

闭包

  • 闭包(函数嵌套函数内部函数就是闭包)
  • 闭包形成的条件
    • 有一个A函数,在A函数内部返回一个B函数
    • 在B函数内部访问了A函数的私有变量
    • 在A函数外部,有一个变量引用返回的B函数
  • 闭包的特点
    • 闭包优点
      • 可以把一些变量放在函数里面,不会污染全局
      • 能够访问函数定义时所在的词法作用域
      • 模拟块级作用域
      • 创建模块
    • 缺点
      • 会导致函数的变量一直保存在内存中,过多的闭包可能会导致内存泄漏