js手写发布订阅(pubsub)
面了一个央企,一上来就让我手写pubsub,没写出来,今天梳理和学习一下怎么写。
发布订阅模式:包含发布者(publisher),订阅者(subscriber),消息中心(message center)。
发布者发布消息给消息中心,并且可以携带参数。
订阅者向消息中心订阅消息,并且可以获取发布者发送的参数。
消息中心在获取到发布者的消息后通知订阅者并且转发参数。
面了一个央企,一上来就让我手写pubsub,没写出来,今天梳理和学习一下怎么写。
发布订阅模式:包含发布者(publisher),订阅者(subscriber),消息中心(message center)。
发布者发布消息给消息中心,并且可以携带参数。
订阅者向消息中心订阅消息,并且可以获取发布者发送的参数。
消息中心在获取到发布者的消息后通知订阅者并且转发参数。
区别从书写形式 -> 函数是否具名 -> 是否有arguments对象 -> 是否可以作为构造函数 -> this指向
JavaScript异步编程的进化历程:callback -> Promise -> Generator -> async/await
异步的意思是该代码与其他代码的关系是异步执行的,而在该代码自己内部是同步执行的。
使用原生js列出页面上出现次数前n的标签名。
这三个方法都是用来改变 this
指向的对象的。
js 最初设计的缺陷导致 js 神奇的存在两个空值: undefined
和 null
。
其他语言中有且只有 null
, NULL
等。
实际开发中,将一个变量赋值为 undefined
和 null
几乎没有区别,且两者都为 Falsy
。
那么两者的区别到底是什么呢?
使用es5中 var
命令声明的变量可以在 window
下找到,比如:
var myName = 'mason'
,可以使用 window.myName
访问到。
但是使用es6的 let
和 const
声明的变量却没有在window下,这是为什么呢?