- 博客(14)
- 收藏
- 关注
原创 如何监听对象里面每一个属性的变化
1.0 版本class Observer{ // 只要将需要监听的那个对象传递给 Observer 这个类 // 这个类就可以快速的给传入的对象的所有属性都添加 get/set 方法 constructor(data){ this.observer(data); } observer(obj){ if(obj && typeof obj === 'object'){ // 遍历取出传入对象的所有
2022-03-26 13:20:33 1690
原创 Object.defineProperty 的基本使用
defineProperty 方法的特点 可以直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回这个对象。defineProperty 用法Object.defineProperty(obj, prop, descriptor)obj:需要操作的对象prop:需要操作的属性descriptor:属性描述符Object.defineProperty(obj, 'name', { // 可以通过 value 来告诉 defineProperty 方法新增的属性的取值
2022-03-26 12:19:36 423
原创 Vue 基本原理面试题常见知识点
Vue 响应式基本原理// 能答出来 Vue 的响应式监听是通过 Object.defineProperty 实现的,至少就能得一半的分const data = {}let name = 'zhangsan'Object.defineProperty(data, 'name', { get: function () { console.log('get'); return name }, set: function (newVal) { console.log(.
2021-12-06 23:41:36 232
原创 Vue 面试题常见知识点
事件修饰符.stop: 阻止事件冒泡.prevent: 阻止默认事件,如超链接标签的重定向.capture: 网页是默认按照冒泡方式去触发函数的,但是当我们使用.capture修饰符时,网页就会按照捕获的方式触发函数,也就是从外向内执行,但是这个时候一定要注意,.capture修饰符一定要写在外层才能生效按键修饰符<!-- 即使 Alt 或 Shift 被一同按下时也会触发 --><button @click.ctrl="onClick">A</butt..
2021-11-19 22:06:57 297
原创 JavaScript 数据结构
1. 栈栈是一个后进先出的数据结构。JavaScript 中没有栈,但可以用 Array 实现栈的所有功能。// 定义一个栈const stack = [];// 入栈stack.push(1);// 出栈const item = stack.pop();2. 队列队列是一个先进先出的数据结构。JavaScript 中没有队列,但可以用 Array 实现队列的所有功能。// 定义一个队列const queue = [];// 入队queue.push(1);// 出队
2021-11-09 11:53:38 990
原创 开发环境、运行环境面试题常见知识点
git 常用命令git add . 把所有修改后的文件添加到本地git checkout xxx 把xxx文件还原到未修改的状态git commit -m "xxx" 提交一行记录git push orign master 把提交的分支推送到远程服务端git pull origin master 从远程服务端拉取分支git branch 查看项目分支git merge xxx 把 xxx 分支合并到主分支...
2021-11-06 15:00:20 82
原创 http 面试题常见知识点
状态码分类1xx 服务器收到请求2xx 请求成功,如 2003xx 重定向,如 3024xx 客户端错误,如 4045xx 服务端错误,如 500常见状态码200 成功301 永久重定向(配合 location,浏览器自动处理)302 临时重定向(配合 location,浏览器自动处理)304 资源未被修改404 资源未找到403 没有权限500 服务器错误504 网关超时Restful API一种新的 API 设计方法(早已推广使用)传统 API 设..
2021-11-04 22:08:00 76
原创 移动端适配常见方案
前端开发常用单位像素什么是像素(Pixel)?在前端开发中视口的水平方向和垂直方向是由很多小方格组成的,一个小方格就是一个像素。例如:div 尺寸是 100 x 100,那么水平方向就占用100个小方格,垂直方向就占用100个小方格。像素特点不会随着视口大小的变化而变化, 像素是一个固定的单位(绝对单位)。百分比什么是百分比?百分比是前端开发中的一个动态单位, 永远都是以当前元素的父元素作为参考进行计算。例如:父元素宽高都是 200px,设置子元素宽高是 50%,那么子元素宽高
2021-11-04 00:02:18 431
原创 JS-Web-API 面试题常见知识点
DOM 本质是从 HTML 语言中浏览器解析出来的一棵树。获取 DOM 节点getElementByIdgetElementsByTagNamegetElementsByClassNamequerySelectorAllproperty 和 attributeproperty:修改JS对象属性,不会体现到HTML结构中attribute:修改HTML属性,会改变HTML 结构(标签结构)两者都有可能引起DOM重新渲染建议:尽量用 property 操作,因为proper..
2021-11-01 23:11:29 197
原创 JS 面试题常见知识点(四)—— 异步
异步和同步的区别基于JS是单线程语言异步不会阻塞代码执行同步会阻塞代码执行应用场景网络请求,如 ajax 图片加载定时任务,如 setTimeout手写 Peomise 加载一张图片function loadImg(src) { return new Promise( (resolve, reject) => { const img = document.createElement('img'); ..
2021-10-31 12:17:00 196
原创 JS 面试题常见知识点(三)—— 闭包
函数作为返回值function create() { const a = 100; return function () { consolo.log(a); }}const fn = create();const a = 200;fn() // 100函数作为参数被传递function print(fn) { const a = 200; fn();}const a = 100;function fn() { co..
2021-10-31 11:05:11 127
原创 JS 面试题常见知识点(二)—— 原型链
直接上代码// 创建一个父类class People { constructor(name) { this.name = name } say() { console.log(`${this.name}`) }}// 创建一个子类继承父类class Student extends People { constructor(name, number) { super(name) this.num
2021-10-30 19:15:16 89
原创 JS 面试题常见知识点(一)
深拷贝注意判断值类型和引用类型注意判断是数组还是对象递归function deepClone(obj = {}) { if (typeof obj !== 'object' || !obj) { // obj 是 null, 或者不是对象和数组,直接返回 return obj; } // 初始化返回结果 let result; if (obj instanceof Array) { result..
2021-10-30 18:41:49 100
原创 HTML + CSS 面试题常见知识点
offsetWidth = (内容宽度 + 内边距 + 边距),无外边距margin 纵向重叠相邻元素的 margin-top 和 margin-bottom 会发生重叠空白内容也会重叠margin 负值问题margin-top 和 margin-left 负值,元素向上、向左移动margin-right 负值,右侧元素左移,自身不受影响margin-bottom 负值,下方元素上移,自身不受影响BFC 理解与应用Block format context,块级格式化上下文.
2021-10-30 15:31:41 98
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人