文章转载自公众号【前端FE】,作者 前端FE
本系列文章针对目前常见的面试题,仅提供了相应的核心原理及思路,部分边界细节未处理。后续会持续更新,希望对你有所帮助。
思考
这是今天的题目,你可以先思考一下,然后重点关注不熟悉的~
逐个击破
6.rem基本设置
在手机端项目中,经常用到是rem单位,笔试的时候你能写出来吗?
// 基准大小
const baseSize = 32;
function setRem () {
const scale = document.documentElement.clientWidth / 750;
document.documentElement.style.fontSize = (baseSize * Math.min(scale, 2)) + 'px';
}
setRem();
// 监听窗口变化
window.onresize = function () {
setRem()
};
7.实现一个双向数据绑定
Vue的双向数据绑定的原理相信大家也都十分了解了,主要是通过Object对象的defineProperty属性,重写data的set和get函数来实现的
,主要还是来实现一个实例。
let obj = {}
let input = document.getElementById('input')
let span = document.getElementById('span')
// 数据劫持和
Object.defineProperty(obj, 'text', {
configurable: true,
enumerable: true,
get() {
console.log('获取数据了')
return obj['text']
},
set(newVal) {
console.log('数据更新了')
input.value = newVal
span.innerHTML = newVal
}
})
// 输入监听
input.addEventListener('keyup', function(e) {
obj.text = e.target.value
})
8.var、let 和 const 区别的实现原理是什么?
var
9.谈谈你对TCP三次握手和四次挥手的理解
TCP三次握手:
四次挥手就是中间多了一层 等待服务器再一次响应回复相关数据的过程。
10.如何让 (a == 1 && a == 2 && a == 3) 的值为true?
const a = {
num: 0,
valueOf: function() {
return this.num += 1
}
};
console.log(a==1 && a==2 && a==3); // true
恭喜你,又掌握了一个新技能~