Question

联系 / 意图 / 区别 / 适用场景 1、联系 发布-订阅模式是观察者模式的一种变体。发布-订阅只是把一部分功能抽象成一个独立的ChangeManager。 2、意图 都是某个对象(subject, publisher)改变,使依赖于它的多个对象(observers, subscribers)得到通知。 3、区别与适用场景 总的来说,发布-订阅模式适合更复杂的场景。 在「一对多」的场景下,发布者的某次更新只想通知它的部分订阅者? 在「多对一」或者「多对多」场景下。一个订阅者依赖于多个发布者,某个发布者更新后是否需要通知订阅者?还是等所有发布者都更新完毕再通知订阅者? 这些逻辑都可以放 …
实现数组方法flat // 实现1 var flat1 = (arr, number = 10) => { let result = [],count = 0; var helper = (arr) => { let res = []; count++; for (let item of arr) { if (Array.isArray(item)) { if (count === number) { break; } res = res.concat(helper(item)); } else { res.push(item); } } return res; }; result …
一道题目 <style> .classA { color: blue; } .classB { color: red; } p { color: black; } </style> <p class="classB classA">hello</p> <!-- 元素p内的文字最终什么颜色:red --> 解释:“类选择器” 的优先级要高于 “类型选择器”;后面声明的类选择器 > 先声明的类选择器,所以颜色为red(css)。 更多实例 1、 <style> div { width: 100px; …
一道题目 typeof typeof typeof null; //'string' typeof操作符 typeof 操作符返回一个字符串,表示未经计算的操作数的类型。 语法: typeof operand typeof(operand) 1、数值 console.log(typeof 42); //'number' console.log(typeof 3.14); //'number' console.log(typeof(42)); //'number' console.log(typeof Math.LN2); …
一道题目 Function.prototype.a = () => alert(1); Object.prototype.b = () => alert(2); function Foo() {} var bar = new Foo(); bar.a(); //Uncaught TypeError: bar.a is not a function bar.b(); //2 表达式结果 以下为chrome 88.0.4324.96 function F(){}; var o = {}; // 这是一个构造函数 typeof F; //'function' // 这是一 …
1、 实现一个工具方法,将下划线命名格式的字符串转化为驼峰命名格式 //实现1 var convert1 = (name) => { let result = name.split("_"); const [first, ...rest] = result; return ( first + rest .map((item) => item.substring(0, 1).toUpperCase() + item.substring(1)) .join("") ); }; //实现2 var convert2 = (name) => { …
题目 求部门安排所有组合。 示例1: 部门:{'frontend': [1, 2], 'backend': [3, 4], 'devops': [5]} 人数:{'frontend': 2, 'backend': 1} 组合:[[1, 2, 3], [1, 2, 4]] 要求:按员工ID升序排序 实现 /** * 部门安排所有组合 * @param departments: dict, key是部门名, value是每个部门对应所有员工ID数组 * 例 {'frontend': [1, 2], …
统计数组中每个字符串出现次数 /** * 统计数组中每个字符串出现次数 * @param string[] strs: 字符串数组, 例如 ['aa', 'ab', 'ab', 'cc', 'cba'] * @return {[key: string]: number} 出现次数对象, 例如 { aa: 1, ab: 2, cc: 1, cba: 1 } */ var frequencyMap = (strs) => { const map = {}; for (let i = 0; i < …
1. function fn2(){ for(var i=0;i<4;i++){ var timer=setInterval(function(i,timer){ console.log(i); clearInterval(timer) },10,i,timer); } } fn2(); 输出:0 1 2 3 3 3 3 重复 2. function fn1(){ for(var i=0;i<4;i++){ var timer=setTimeout(function(i){ console.log(i); clearTimeout(timer) },10,i); } } …
1. 输出是什么? function sayHi() { console.log(name) console.log(age) var name = 'Lydia' let age = 21 } sayHi() A: Lydia 和 undefined B: Lydia 和 ReferenceError C: ReferenceError 和 21 D: undefined 和 ReferenceError 我的:D(ok) 2. 输出是什么? for (var i = 0; i < 3; i++) { setTimeout(() => …