fish_head

Results 25 comments of fish_head

常规法 ```javascript const currying = fn => { if (typeof fn !== 'function') { return new Error('No function provided') } return function curriedFn(...args){ if (args.length < fn.length) { return function...

## ღ( ´・ᴗ・` )比心 ```javascript const createPromise = (method) => { const promise = new Promise((resolve, reject) => { method(resolve, reject) }) return promise } const race = (...tasks) =>...

## 函数节流以及其使用场景 节流: **节流就是流体在管道内流动,突然遇到截面变窄,而使压力下降的现象。节制流入或流出,尤指用节流阀调节。** 出处:**语出《荀子·富国》:“百姓时和、事业得叙者,货之源也; 等赋府库者,货之流也。故明主必谨养其和,节其流,开其源,而时斟酌焉,潢然使天下必有馀而上不忧不足。”后以“开源节流”指开辟财源,节约开支。** 其实作用跟定义就是上面的意思,在日常开发中,我们经常会有频繁调用或执行某一函数的需求,其实按实际用户情况,可能 **100ms** 甚至 **1s** 调用一次就OK,所以需要用到函数节流,在一定的时间间隔之后再执行函数。 场景很多,常见的有: 1. 屏幕尺寸变化时页面内容的变动,执行相应逻辑; 2. 监听鼠标滚动时间,执行相应逻辑; 3. 监听重复点击时的时间,执行相应逻辑 下面依然是 **`lodash`** 的代码实现: ```javascript function isObject(value) { const type = typeof value...

JSONP(JSON with Padding)是数据格式JSON的一种“使用模式”,可以让网页从别的网域要数据。另一个解决这个问题的新方法是跨来源资源共享。 由于同源策略,一般来说位于server1.example.com的网页无法与 server2.example.com的服务器沟通,而HTML的 元素是一个例外。利用 元素的这个开放策略,网页可以得到从其他来源动态产生的JSON数据,而这种使用模式就是所谓的 JSONP。用JSONP抓到的数据并不是JSON,而是任意的JavaScript,用 JavaScript解释器运行而不是用JSON解析器解析。 配合后端的前端实现 ```javascript ```

# 今天的题目不现实。。。JS一共有284种标准内置对象。。。事实上它们stringify出来不都是一样的 ```javascript Object.prototype.types = function () { var toString = Object.prototype.toString var map = { '[object Boolean]': 'boolean', '[object Number]': 'number', '[object String]': 'string', '[object Function]': 'function', '[object Array]':...

# 异步加载JS的方法 1. > 这个布尔属性被设定用来通知浏览器该脚本将在文档完成解析后,触发 DOMContentLoaded 事件前执行。如果缺少 src 属性(即内嵌脚本),该属性不应被使用,因为这种情况下它不起作用。对动态嵌入的脚本使用 `async=false` 来达到类似的效果。 2. > 该布尔属性指示浏览器是否在允许的情况下异步执行该脚本。该属性对于内联脚本无作用 (即没有src属性的脚本)。 3. JS异步创建 ```javascript setTimeout(function () { var script = document.createElement('script') script.src = 'xxx'; document.querySelector('body').appendChild(script) },...

1. 用display: grid代替浮动布局 2. 用display: flex代替浮动布局 3. 用display: table / table-*代替浮动布局 4. 用column-*代替浮动布局

## 方法一,栈,先入后出,后入先出 ```javascript const arr = [1, 2, 3, [4, 5, 6, [7, 8, 9, [10, 11, 12]]]]; const flattenDeep = arr => { const resArr = []; while (arr.length...

```javascript eval ```

## 观察者模式 > 观察者模式:观察者(Observer)直接订阅(Subscribe)主题(Subject),而当主题被激活的时候,会触发(Fire Event)观察者里的事件。 ```javascript //有一家猎人工会,其中每个猎人都具有发布任务(publish),订阅任务(subscribe)的功能 //他们都有一个订阅列表来记录谁订阅了自己 //定义一个猎人类 //包括姓名,级别,订阅列表 function Hunter(name, level){ this.name = name this.level = level this.list = [] } Hunter.prototype.publish = function (money){ console.log(this.level + '猎人'...