- 博客(14)
- 资源 (8)
- 收藏
- 关注
原创 彻底搞懂JS原型链
原型链Object既是对象又是函数。内置匿名函数:一个函数生成了Object和Function。f(){native code}根源原型对象:就是一个对象,里边有根源的一些方法,toString,valueOf,constructor等.Object.prototypeObject的原型链Object.prototype//根源原型对象Object.prototype.__proto__//nullObject.__proto__//内置匿名函数f(){native code}Obje
2021-10-24 20:42:14
534
1
原创 前端JS数组属性和方法总结
Array的判断var a = []//instanceofa instanceof Array//constructora.constructor === Array//Object.prototype.isPrototypeOfArray.prototype.isPrototypeOf(a)//getPrototypeOfObject.getPrototypeOf(a) === Array.prototype//Object.prototype.toStringObject.pro
2021-10-24 20:39:44
2099
原创 前端数组去重
去重就是删除数组中重复出现的元素。方法遍历数组新建一个数组,遍历原数组,判断元素是否在新建的数组中,若在则继续循环,不在则把这个元素加入新数组中。let arr = [1,2,3,4,5,2,3,2]let arr2 = []for(let i = 0;i<arr.length;i++){ if(arr2.indexOf(arr[i]) == -1){ arr2.push(arr[i]) }}//for换成别的方法forEach等都行先排序再删除这
2021-10-24 20:38:30
1935
原创 2021-10-24
复杂度时间复杂度O(n ^ n ),O(n!),O(2 ^ n ),O(n ^ 2 ),O(nlogn),O(n),O(logn)空间复杂度一个算法在运行过程中临时占用存储空间大小的度量各种排序比较类排序通过比较来决定元素间的相对次序,他的时间复杂度不能突破O(nlogn),所以也成为了非线性性时间比较类排序交换排序冒泡排序稳定排序,最基础,一次比较两个元素,顺序不对,就交换位置,然后基准向后推,继续执行,执行到数组末尾之后,再次从头开始。let array = [1,2,3,4,5
2021-10-24 20:37:12
1883
原创 CSS中百分比总结
tip百分比用于继承,继承的是计算之后的值而不是百分比。width,height相对于它的包含块。如果父元素没有设置height,那么相当于auto。margin,padding百分比的计算是基于其包含块的宽度border-radius横轴上的百分比参考的是元素自身的宽度,纵轴上的百分比参考的是元素自身的高度,负值是无效的background-position基于父元素减去子元素;排版:(父元素-背景图片)*百分比font-size基于父元素的百分比line-height基
2021-10-07 21:04:25
350
原创 valueof和toString的调用
valueOf方法调用valueOf方法后,会返回它自身。(Object,Array,Function)当new Number时,创建出一个对象,但是返回值不是Object类型,而是对应的Number等,因为内部有重写valueOf方法。(Number,String,Boolean)const a = 1 和 const b = new Number(1)//适用于所有的基本类型,调用那些方法时,两种声明方式,结果一致a是一个基本数据,为什么能使用toString和valueOf,proto
2021-03-31 23:18:23
142
原创 比较运算符的使用(==)
比较运算符比较运算符= =,<,>,<=,>=,!=,= = =,!= =两侧都是引用类型比较的都是对象,这比较的是引用。就是比较两者在栈中存放的地址是否指向同一个堆地址,或者说栈中的信息是否相同。const a = []const b = []console.log(a == b)//false两侧是引用类型和基本数据类型首先将引用类型转换为基本值,调用其自身的valueOf方法。数组就是调用toString()两侧都是基本数据类型当数据类型一致时,相当于
2021-03-31 23:16:01
1076
原创 深入原型链
关于原型链,一些深入的理解原型链Object既是对象又是函数。内置匿名函数:一个函数生成了Object和Function。f(){native code}根源原型对象:就是一个对象,里边有根源的一些方法,toString,valueOf,constructor等.Object.prototypeObject的原型链Object.prototype//根源原型对象Object.prototype.__proto__//nullObject.__proto__//内置匿名函数f(){na
2021-03-31 23:09:05
147
原创 New做的事
new关键字js中万物皆对象,所以js的new关键字不是用来创建类的实例对象,而是用来继承。new时执行的操作当识别到new关键字时,执行以下操作var cat = new Animal("cat")//底层执行操作var obj = {}obj._proto_ = Anmical.prototypevar result = Anmial.call(obj,"cat")return typeof result === 'obj'?result:obj封装_new实现new功能
2021-03-31 23:04:51
92
原创 var和window全局变量
var定义的全局变量和window变量区别使用var定义的全局变量相当于直接挂载在window对象上,但是和window.c=2定义的变量有所不同。直接定义的全局变量直接挂载在window上,a=2;和window.a=2,效果一样。var定义变量不能使用delete删除原因:通过var语句添加的全局变量有一个configurable属性,其默认值为false,直接定义的window.c的configurable属性是truevar a = 2;windows.c = 3;delete a;
2020-12-08 15:30:00
3427
原创 前端性能优化方案思路
前端性能优化更快的网络通信网络请求CDN缓存系统提高命中率降低回源率多级缓存服务器通信层次(请求次数)资源合并雪碧图域名分片多域名缓存有朋友问我最快的请求是什么请求?我说:没有请求才是最快的请求- 强缓存 - cache-control - expires- 协商缓存- 减小数据量压缩数据压缩gzipbr代码文件压缩HTML/CSS/JS中的注释和空格,长变量名静态资源字体资源去除元
2020-11-28 22:19:07
170
原创 javascript数组的扁平化处理
javascript数组的扁平化处理先定义数组和检测是否扁平化var a = [1,2,3,[4,5,6,[7,8,9]]];let s = ss(a);s.forEach((v)=>{ console.log(typeof v)})四种方法基础的循环判断然后递归这个操作function ss(arr){ let array = []; for(let i =0;i<arr.length;i++){ if(arr[i] insta
2020-11-10 14:33:00
115
原创 javascript中“+”的使用
javascript中的+连接符当+左右存在String,Array,Function,Object:+作为连接符存在;Object打印:[object,Object];Array:打印数组实际内容;Function:打印Function(){};String:打印字符串;undefined:undefined;null:null;连接之后类型为String(typeof)运算符当+左右没有String,Function,Object,Array时,+作为运算符使用nu
2020-11-05 18:20:08
1223
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人