![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
javascript
前端zjh
生命苦短,难容片刻恐惧
展开
-
彻底搞懂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 · 501 阅读 · 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 · 2078 阅读 · 0 评论 -
前端数组去重
去重就是删除数组中重复出现的元素。方法遍历数组新建一个数组,遍历原数组,判断元素是否在新建的数组中,若在则继续循环,不在则把这个元素加入新数组中。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 · 1920 阅读 · 0 评论 -
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 · 1875 阅读 · 0 评论 -
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 · 135 阅读 · 0 评论 -
比较运算符的使用(==)
比较运算符比较运算符= =,<,>,<=,>=,!=,= = =,!= =两侧都是引用类型比较的都是对象,这比较的是引用。就是比较两者在栈中存放的地址是否指向同一个堆地址,或者说栈中的信息是否相同。const a = []const b = []console.log(a == b)//false两侧是引用类型和基本数据类型首先将引用类型转换为基本值,调用其自身的valueOf方法。数组就是调用toString()两侧都是基本数据类型当数据类型一致时,相当于原创 2021-03-31 23:16:01 · 1063 阅读 · 0 评论 -
深入原型链
关于原型链,一些深入的理解原型链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 · 136 阅读 · 0 评论 -
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 · 85 阅读 · 0 评论 -
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 · 3395 阅读 · 0 评论 -
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 · 108 阅读 · 0 评论 -
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 · 1220 阅读 · 0 评论