# three-vue-learn **Repository Path**: threejs_6/three-vue-learn ## Basic Information - **Project Name**: three-vue-learn - **Description**: threejs学习,以及贴图,模型资源的存储 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-07-31 - **Last Updated**: 2024-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # threejs ### js #### js 基本数据类型与引用数据类型 - `基本数据类型` 包含 string,number,boolean,null,undefined,symbol - `引用数据类型` 包含 Object,function,正则以及 Array 基本数据类型与引用数据类型的不同是存储位置的不同,基本数据类型存储在栈中,引用数据类型存储在堆中,会在栈中存储一个指针,指向堆中的数据。 #### 数据类型检测的方法有哪些? - typeof 用于检测基本数据类型 其中数组,对象,null 会被检测为 Object - instanceof 用于检测引用数据类型,其内部运行机制是判断在其原型链中能否找到该类型的原型 - 原型链检测 Object.prototype.toString.call() #### 判断数组的方式有哪些? - Object.prototype.toString.call() === 'Array' - 通过原型链判断 ojb.**proto** === Array.prototype - es6 的 Array.isArray()方法 - instanceof 判断 #### 简述一下 this 的理解 this 是执行上下文中的一个属性,他指向最后一次调用这个方法的对象 全局中 this 指向 window,局部则指向当前对象,箭头函数没有自己的 this,他只会在自己作用于的上一层继承 this 可以使用 apply,call,以及 bind 的方式改变 this 的指向 #### new 操作符的实现原理 - 首先创建一个新的空对象 - 设置原型,将对象的原型设置为函数的 prototype 对象 - 让函数的 this 指向这个额对象,执行构造函数的代码 - 判断函数的返回值类型 #### 数组有哪些方法 - toString(),toLocalString,join - pop,push,shift.unshift, reverse,sort,slice,splice 数组连接 concat,数组截取 slice,数组插入删除的话可以使用 splice #### 数组遍历的方法有那些 - forEach - map - filter - for of - every,some - find findIndex - reduce #### 闭包 闭包是指有权访问另外一个函数作用于中变量的函数 创建闭包常见的方式是在一个函数内创建另外一个函数,创建的函数可以访问到当前函数的局部变量 ##### 使用场景 - 使用闭包解决 for 循环 var 变量问题 ```js for (var i = 0; i < 10; i++) { (function (j) { setTimeout(function () { console.log(j); }, 1000); })(i); } ``` #### Promise.all 和 Promise.race 的区别以及使用场景 Promise.all 可以将多个 Promise 实例包装成一个新的 Promise 实例,同时,成功和失败的返回值是不同的 #### 浏览器地址栏输入 url 到请求返回发生了什么 1. 输入 url 后解析出协议,端口,路径等信息,并构成一个 http 请求,这个时候浏览器会根据请求进行强缓存,以及协商缓存的处理 2. DNS 域名解析 3. 建立 TCP 连接 这个时候就是 tcp 三次握手的问题 4. 发送 http 请求 5. 服务器返回响应 6. 浏览器解析响应 7. 渲染页面 #### 防抖与节流 防抖是指在一系列连续的操作中,只有在最后一次操作的一段时间内没有心的操作发生时,才会执行绑定的函数,防抖的主要目的是防止函数在短时间内被高频触发 - 输入框实时搜索 - 窗口尺寸变化 - 表单提交,放重复提交 节流是指在一定的时间间隔内,只允许函数执行一次,节流的主要目的是限制函数执行的频率,保证函数不会过于频繁的执行 - 无线滚动 - 鼠标移动 - 定时器 - 表单验证 #### vue3 生命周期