当前位置: 首页 > news >正文

秋招前端面试题总结

1、this指向问题,以前总是迷糊,现在总算是一知半解了。应当遵循以下原则,应该就能做对题目了。

  • 如果一个标准函数,也就是非箭头函数,作为某个对象的方法被调用时,那么这个this指向的就是这个对象。涉及到闭包函数时,非严格模式下,this指向window(ES module浏览器),严格模式指向undefined
  • 箭头函数的this是继承上一个函数作用域,this在函数定义的那一刻才确定的,不能通过call、apply、bind改变this指向。

看这些文字可能会很迷糊,直接上例子吧!

例1
var arr = [4, 5, 6]
let obj = {arr: [1, 2],inArr() {this.arr.push(3);},outArr: () => {this.arr.pop();}, resetArr() {() => { // 注意这个箭头函数并没有执行,容易被坑console.log(this)this.arr = [7, 8, 9]}}
}obj.inArr()
obj.outArr()
obj.resetArr()
console.log(arr) // [4, 5]
console.log(obj.arr) // [1, 2, 3]
例2
var name = 'window';
var person1 = {name: 'person1',show1: function() {console.log(this.name)},show2: () => console.log(this.name),show3: function() {return function() {console.log(this);}},show4: function() {return () => console.log(this.name);}
}
var person2 = { name: 'person2' };person1.show1(); // person1
person1.show1.call(person2); // person2person1.show2() // window
person1.show2.call(person2); // window,箭头函数不能改变this指向person1.show3()(); // window对象 {} 闭包情况,非严格模式下this指向window
person1.show3().call(person2); // person2对象 {}
person1.show3.call(person2)(); // window对象 {}person1.show4()(); // person1
person1.show4().call(person2); // person1
person1.show4.call(person2)(); // person2// 这个例子如果没看懂,可以看看这个视频 
// https://www.bilibili.com/video/BV1JL411P752/?spm_id_from=333.337.search-card.all.click&vd_source=121d5b82e74c8de735f9bfb588f1044b

2、对象字面量创建对象 与 Object.create(null) 创建对象有什么区别?     

  • 对象字面量创建对象 ,new Object()  和  { }  效果是一样
  • 通过Object.create(null)创建的对象是非常纯净的,原型链的属性和方法都不会携带。这就非常适合数组对象开发的时候,从对象中取值,提高循环效率。

     var  obj  = Object.create(null) ;  

     console.log(obj);   // 打印可以发现,obj 没有__proto__ 属性

  • 如果需要使用到对象的继承属性和方法,那就使用 obj = {}  或 obj = new Object() 这种方式。

3、哈夫曼树带权路径长度(WPL)计算,做笔试的时候经常碰到。参考这篇文章,很快就能学会。

哈夫曼树带权路径长度(WPL)计算 - 掘金

http://www.lryc.cn/news/167973.html

相关文章:

  • 【入门篇】ClickHouse 数据类型
  • 关于Python数据分析,这里有一条高效的学习路径
  • 基于 json-server 工具,模拟实现后端接口服务环境
  • 想要精通算法和SQL的成长之路 - 课程表II
  • 【sgGoogleTranslate】自定义组件:基于Vue.js用谷歌Google Translate翻译插件实现网站多国语言开发
  • 论文总结《A Closer Look at Few-shot Classification Again》
  • Postman使用_参数设置和获取
  • 【SQL】优化SQL查询方法
  • Linux-相关操作
  • 二十、MySQL多表关系
  • HarmonyOS/OpenHarmony应用开发-DevEco Studio新建项目的整体说明
  • 去耦电路设计应用指南(三)磁珠/电感的噪声抑制
  • Spring Bean的获取方式
  • 4795-2023 船用舱底水处理装置 学习记录
  • [框架设计之道(二)]设备、任务设置及业务流程
  • Nuxt3+Vite批量引入图片
  • 采用nodejs + socket.io实现简易聊天室功能(群聊 + 私聊)
  • 消息队列(一):需求分析
  • ImageViewer技术实现细节
  • MFC多文档程序,从菜单关闭一个文档和直接点击右上角的x效果不同
  • 【数据结构】C++实现AVL平衡树
  • 图神经网络系列之序章
  • Unity中 UI Shader的基本功能
  • 【自学开发之旅】Flask-标准化返回-连接数据库-分表-orm-migrate-增删改查(三)
  • numpy增删改查
  • 【kafka】kafka重要的集群参数配置
  • cs224w_colab3_2023 And cs224w_colab4_2023学习笔记
  • Cannot find module ‘prop-types‘
  • LeetCode-63-不同路径Ⅱ-动态规划
  • unity 使用Photon进行网络同步