- 博客(13)
- 收藏
- 关注
原创 JS实现最小生成树(普里姆算法)
JS实现最小生成树(prim算法)图中有五个节点ABCDE,该算法实现在这张图中找到最短的路径将ABCDE串联在一起。核心就是先拿到图中的一个点,然后判断它的邻居中离谁最近,就前往它的邻居中,然后再递归判断邻居的邻居。例如从A开始,它有BCD三个邻居,到D的距离最近,然后到达D...
2020-12-11 21:29:35 684 3
原创 js new的时候发生了什么
(1)创建一个新对象(2)将构造函数的作用域赋给新对象(因此this就指向了这个新对象)(3)执行构造函数中的代码(为这个新对象添加属性)(4)返回新对象js实现newfunction person(name) { this.name = name;}function _new() { //1创建一个新对象 let target = {}; let [constructor, ...args] = [...arguments] //2原型链链接 target._
2021-10-24 10:06:25 196
原创 js判断变量的类型
1.使用typeof可检测number,string,boolean,function,undefined等类型2使用instanceof与typeof运算符相似,用于识别正在处理的对象的类型。 与typeof方法不用的是,instanceof要求开发者明确的确认对象为某种特定类型3使用constructorconstructor是原型对象上的属性,指向构造函数。但是根据实例对象寻找属性的顺序,若实例对象上没有实例属性或方法时,就去原型链上寻找,因此,实例对象也是能使用constructor属性的
2021-10-10 11:18:58 167
原创 js垃圾回收笔记(标记清除算法)
一.可达性js的内存管理中的一个主要概念。可达性的值就是通过某种方式可以访问或可用的值,并且它被存储在内存中。有一组固定的可达值,他们被称为根1 本地函数的局部变量和参数2 当前嵌套调用链上的其他函数的变量和参数3 全局变量4 一些内部的如果引用或者引用链能从根变量上访问到该值,则这个值为可访问的标记清除算法从根节点开始标记,然后顺着根节点的引用,将可达的变量也标记。直到有未访问的引用为止。清除那些没有被标记的变量。一些优化:分代回收 对象分为两组:“新对象”和“旧对象”。许多
2021-10-10 11:05:23 984
原创 js判断对象是否存在环
json.stringify() 可以将对象转换成json格式的字符串。 js的对象是树形结构的 当这个对象存在闭环时,json.stringify()会抛出一个错误。“环”的形成是因为对象中子属性中赋值了父属性的引用,所以我们需要记录下父属性的地址与子节点属性进行比较,若一样则形成了闭环,若不同则没有var obj = { foo: { name: 'foo', bar: { name: 'bar', baz:
2021-09-22 18:39:44 538
原创 js实现全排列
```javascript function fullpermutate(str) { let result = []; if(str.length > 1){ for(let i = 0;i < str.length;i++){ var left = str[i] //当前元素 var rest = str.slice(0,i) + str.slice(i+1,str.length)...
2021-09-09 13:33:39 97
原创 js闭包笔记
闭包MDN上给的定义是: 一个函数和对其周围状态(词法环境)的引用捆绑在一起(或者说函数被引用包围),这样的组合就是闭包。 闭包可以让你在一个内层函数中访问到其外层函数的作用域。在JavaScript中,每当创建一个函数,闭包就会在函数创建的同时被创建出来。词法作用域function init() { var name = "Mozilla"; // name 是一个被 init 创建的局部变量 function displayName() { // displayName() 是
2021-08-29 21:19:24 103
原创 类的继承和创建
创建一个动物类function Animal(name) { this.name = name || 'Animal'; this.sleep = function () { console.log(this.name + '正在睡觉') } } Animal.prototype.eat = function (food) { console.log(this.name + '正在吃:' + food);
2021-08-28 16:56:09 171
原创 CSS清除浮动
1使用clear属性在浮动的元素后面加上一个空元素并设置css属性 clear:both;2使用overflow给浮动元素设置 overflow:hidden 或者 overflow:auto 另外在IE6中需要触发hasLayout,例如为父元素设置宽高或者zoom:1在添加了overflow之后,浮动的容器又回到了容器层,把容器高度撑起达到清楚浮动的作用。3给浮动的元素的容器添加浮动给浮动的元素的容器添加浮动后,会清楚内部的浮动,但是会使整体浮动,影响布局。4使用邻接元素什么也不做,在
2021-07-05 15:02:16 86
原创 逻辑运算^&|~<<>>
一:异或二进制运算 两者相同为0 不同为11^1=00^0=01^0=10^1=1交换两个数的值时 无需第三个数如a=11,b=9.以下是二进制a=a^b=1011 ^ 1001 = 0010b=b^a=1001 ^ 0010 = 1011a=a^b=0010 ^ 1011 = 1001a=9 b=11二:与& 两个位都为1时结果才为10&0=00&1=01&0=01&1=1三:或| 两位都为0时结果才为00|0=00
2021-06-19 13:07:41 178
原创 2021-02-28
力扣1.两数之和(JS)两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。第一种方法:两层for循环,暴力破解。var twoSum = function(nums, target) { for(var i = 0;i < nums.length;i++){ for(v
2021-02-28 21:48:05 123 1
原创 IP分类(A、B、C)
一:简介IP地址由四段组成,每个字段是一个字节,即4个字节、 每个字节有8位,最大值是255(2^8=256:0~255)。 全世界范围是唯一的 32 位(4个字节 * 8位)的标识符。 IP地址由两部分组成,即网络地址和主机地址,二者是主从关系: 1. 网络号 net-id,它标志主机(或路由器)所连接到的网络,网络地址表示其属于互联网的哪一个网络 2.主机号 host-id,它标志该主机(或路由器)
2021-01-07 15:42:24 767 1
原创 componentWillReceiveProps()简单应用
React利用componentWillReceiveProps(nextProps)实现组件中传值在我们的项目中大部分都需要将UI组件和功能组件相分离,这样才能在后期更好的维护,但是当我们得到功能组件发送请求通过异步操作来获取数据时,而props父子间传值不能实现。因为在父组件接收到数据之前已经完成了对子组件的传值(为空),然后子组件render后显示未接收到数据。 其实是父组件的state改变但是不会引起子组件的props改变。而这个componentWillReceiveProps(nextPr
2021-01-06 21:28:47 1727 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人