观察者模式又称为发布订阅模式,是将事件的触发和接收解耦的一种设计模式。
大整数求和
众所周知,计算机计算的数字是有上限的,js里可以精确表示的最大值是 Number.MAX_SAFE_INTEGER,那超过这个值的两个整数求和,要怎么计算呢?
3分钟学会图片合成,最简单的图片合成教程
日常生活中我们常常会遇到想要拍一张合照,但是附近没有人可以帮忙或者不愿意麻烦别人的情况,这时我们就可以通过图片合成来达到“合影”的效果。
树形结构的算法
树形结构是算法中很常见的一种结构,正好工作中遇到了,就研究一下遍历
、深度
、查找节点
等算法。
js继承
js中的继承,是指让一个对象拥有另一个对象的属性和方法。而实现继承主要有以下六种方式
- 原型链继承
- 借用构造函数继承
- 组合继承
- 原型式继承
- 寄生式继承
- 寄生组合式继承
三数之和
写给定一个包含n个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
求第n个质数
写一个求第n个质数的算法
闭包的应用
关于闭包的定义,已经在另一篇文章 闭包的特征和应用场景 中介绍了,这里想来分析一个例子。
写一个go方法,要求:
执行go('l')
返回gol
,
执行go()('l')
返回gool
,
执行go()()('l')
返回goool
。
一、问题分析
按照题干的描述,go
方法可以选择是否传参数,传参数时返回字符串,不传参数返回另一个函数,而且这个函数还可以再次调用生成另一个函数,但每调用一次,最后返回的字符串中间会多一个o
。那就说明有一个变量在函数执行结束后仍然被保留,很容易联想到闭包。
组合继承和寄生组合继承
js继承中的组合继承和寄生组合继承有什么区别呢?js中的继承分为两个部分,对实例的继承和对原型的继承。可以用原型来继承公用的属性和方法,当原型上的属性和方法改变时,继承关系链上的所有对象都将受到影响;用实例来继承特有的属性和方法,当实例上的属性和方法发生改变时,继承关系链上的所有对象互不影响。
js常见排序算法
排序算法是js最基础的算法,只要弄清楚各种排序算法的排序逻辑,要实现起来就不难了。
1.冒泡排序
2.快速排序
3.选择排序
4.插入排序