前端面试题(五)

188 阅读2分钟

「这是我参与2022首次更文挑战的第15天,活动详情查看:2022首次更文挑战」。

什么是原型链?

每一个实例对象上有一个proto属性,指向的构造函数的原型对象,构造函数的原型

对象也是一个对象,也有proto属性,这样一层一层往上找的过程就形成了原型链。

什么是闭包?手写一个闭包函数? 闭包有哪些优缺点?

学习文档:zhuanlan.zhihu.com/p/22486908

闭包(closure)指有权访问另一个函数作用域中变量的函数。简单理解就是 ,一个作用

域可以访问另外一个函数内部的局部变量。

一个作用域有权访问另一个函数内部的变量

function fn() {
    var num = 10;
    function fun() {
        console.log(num); 
    }
    //这里return 是为了让函数外部可以访问这个fun函数
    return fun;
}
var f = fn(); 
f();

作用:延长变量作用域、在函数的外部可以访问函数内部的局部变量,容易造成内层泄露,因为闭包中的局部变量永远不会被回收(闭包不会造成内存泄露,造成内存泄漏的是ie浏览器,使用完闭包回收不了变量。)

自己理解的作用:为了让外部可以使用到函数内部的局部变量

内存泄露是什么?

内存泄露是指你用不到(访问不到)的变量,依然占居着内存空间,不能被再次利用起来。

组件中的data为什么要定义成一个函数而不是一个对象?

每个组件都是 Vue 的实例。组件共享 data 属性,当 data 的值是同一个引用类型的值时,改变其中一个会影响其他

谈谈你平时都用了哪些方法进行性能优化?

减少http请求次数、打包压缩上线代码、使用懒加载、使用雪碧图、动态渲染组件、CDN加载包。