js
文章平均质量分 61
木有前途
记录工作,生活中的点点滴滴。想到什么写什么
展开
-
new 运算符详解
当使用 new 运算符执行一个函数时,称为构造函数执行模式,返回一个实例对象,而函数体中的this指向这个实例 如何实现? 创建一个对象 将对象原型指向构造函数的原型 将this指向这个对象 返回这个对象 // 实现 new function fakeNew(){ const obj = {} // 获取构造函数 const _constructor = [].shift.call(arguments) // 改变原型指向 obj.__proto__ = _constructor.prot.原创 2021-04-27 14:49:20 · 448 阅读 · 0 评论 -
基础面试题分析
1 let a = { n: 1 } // 声明变量 a,开辟堆内存AAAFFFF0000 存储键值对 n: 1,将内存地址赋值给 a,将变量 a 与 堆内存关联 let b = a // AAAFFFF0000 // a.x = b 这种写法会造成堆的无限嵌套,引发内存溢出 // 声明变量 b,与 堆内存关联 a.x = a = { n: 2 } // (1) 拆分为 a.x = { n: 2 } 、 a = { n: 2 } // (2) 此时 a.x 的 a 仍然关联旧的堆内存地址 AAAFFF原创 2021-04-22 16:34:42 · 100 阅读 · 0 评论 -
盒模型
CSS 传统盒模型 content => width & height margin padding border 盒子宽度 => content + 左右padding + 左右border CSS3 新盒模型 box-sizing: content-box; (默认值,传统盒模型) box-sizing: border-box; (新盒模型) 设置border-box...原创 2020-03-13 11:09:40 · 65 阅读 · 0 评论 -
Math数学函数
Math 数学函数 数学函数:但它不是一个函数,它是一个对象,存储了很多操作数字的属性和方法 ,因此也称作数学函数 常用属性和方法 对于非数字会先使用Number转换为数字类型,再进行处理 Math.abs([number val]); 获取绝对值(绝对值永远是正数或0) Math.ceil / floor([number val) 把一个数向上或向下取整 Math.round([num...原创 2020-03-12 14:05:20 · 182 阅读 · 0 评论 -
JS基础Number类型详解
parseInt([val])\parseFloat([val]) 遵循从左到右的顺序查找有效字符,如果[val]不是字符串,则会先转成字符串再查找 Number([val]) 、isNaN([val]) 遵循C++机制只要出现任何一个非有效数字,都是NaN,[val]为null/空字符串/false都为0 isNaN(null); // false parseIn(null); NaN Numb...原创 2020-03-12 10:40:57 · 196 阅读 · 0 评论 -
ES6变量和常量
ES6增加了 let 和 const 来进行赋值 区别var var 可重复声明 var 没有块级作用域 var 可无限制修改 /// 重复声明 var a = 2; var a = 3; console.log(a) /// 3 /// 无块级作用域 if (true) { var b = 5; } console.log(b); /// 5 /// 可无限制修改 var c = 'str...原创 2020-03-11 10:53:50 · 170 阅读 · 0 评论 -
前端面试题
1、列举常用浏览器,及内核 常用浏览器有Chrome,FireFox,Safari,IE 内核有Trident,Gecko,Presto,Webkit最常用 2、浏览器如何渲染网页 (1)遍历DOM节点,构建DOM树 (2)解析CSS文件生成CSS规则树 (3)渲染树布局,从根节点开始遍历,输出盒子模型。 (4)渲染树绘制,浏览器遍历渲染树,调用渲染器的paint()方法在屏幕上显示其内容,渲染树...原创 2020-01-13 15:29:08 · 118 阅读 · 0 评论 -
算法-排序
冒泡排序 冒泡排序比较任何相邻的两个元素,如果第一个比第二个大,则交换他们,元素向上移动至正确的位置,像冒泡一样,因此而得名。复杂度O(n2) function List(){ // 辅助函数,交换元素位置 function swap(id1, id2) { const aux = arr[id1]; arr[id1] = arr[id2]; arr[id2] = aux; ...原创 2019-11-28 13:40:56 · 84 阅读 · 0 评论 -
正则表达式常用元字符
字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符 ^ 表示语句的开头 $ 表示语句的结尾 * 匹配前面的字符零次或多次,例: zo*可以匹配 ‘z’ 、‘zoo’,等同于{0, } + 匹配前面的字符一次或多次,例: zo*可以匹配 ‘zo’ 、‘zoo’, 不能匹配 ‘z’,等同于{1, } ? 匹配前面的字...原创 2019-11-26 16:01:18 · 396 阅读 · 0 评论 -
JavaScript基础知识汇总
乱七八糟的,有知识点,有小技巧。想到什么写什么,目的加深印象(持续更新) 快速将多维数组转换成一维数组,并排序 const arr = [[1, 2, 4, 7], [3, 5, 8, 11], [6, 9, 12, 14], [10, 13, 15, 16]] // ES6 arr.flat().sort((a, b) => {return a - b}); // ES5 arr.toSt...原创 2019-11-22 17:30:28 · 94 阅读 · 0 评论 -
script元素
<script>标签是向HTML页面中插入js的主要方法。 属性 定义 src 表示包含要执行的外部js文件 defer 立即加载,但延迟执行,HTML5规范中要求按照出现的顺序执行,但在现实当中,延迟脚本并不一定会按照顺序执行,也不一定会在DomContentLoaded事件出发后运行,因此建议只包含一个延迟脚本。 async 异步加载,不会阻塞文档的呈现。会...原创 2019-11-22 11:13:43 · 86 阅读 · 0 评论 -
js 继承
对象冒充 原理 构造函数使用this关键字给所有属性和方法赋值(即采用类生命的构造函数方式)。因为构造函数只是一个函数,所以可以使classA构造函数成为classB的方法,然后调用它。classB就会收到classA中定义的属性和方法。 function classA(sColor) { this.color = sColor; this.sayColor = function() { ...原创 2019-11-20 11:01:02 · 76 阅读 · 0 评论 -
扩展运算符...
ES6扩展运算符 … 扩展运算符用于取出参数对象中的所有可遍历属性,拷贝到当前对象中。如果将扩展运算符用于数组赋值,只能放在最后一位,否则会报错。扩展运算符对对象的拷贝属于浅拷贝,实际在拷贝的时候,拷贝的是对象的引用,当原对象发生变化,拷贝的对象也会跟着变化。 let obj = {a: 1, b: 2}; let obj2 = {...obj} obj2.b = 3 // obj = {a: 1...原创 2019-11-18 09:55:53 · 196 阅读 · 0 评论 -
数组学习 1
.map map方法对数组的所有成员依次调用一个函数,根据函数结果返回一个新数组。map方法接受一个函数作为参数。该函数调用时,map方法会将其传入三个参数,分别是当前成员、当前位置和数组本身。根据遍历执行的匿名函数,对于原数组中的每个值产生一个对应的值,并返回一个新的数组,存在一个映射关系,并且不会改变原数组,不会对空数组进行检测。 var numbers = [1, 2, 3]; number...原创 2019-11-15 16:11:19 · 109 阅读 · 0 评论