Alan Chan
Alan Chan
> @alanchanzm 1. `class` 声明会提升 . 是不是写错了? > 原文: Class declarations, unlike function declarations, are not hoisted. @labike 原文有问题,`class` 是会提升的,其表现与`let`、`const`类似,变量名会进入TDZ。 看下例:如果没有提升,`foo` 会是块作用域外的`Foo`实例。但是由于提升的关系,块作用域内的`Foo`遮蔽了外层的同名函数。 ```javascript var Foo = function() { this.foo =...
@labike 可能是我们对「提升」的理解不同吧?我理解的「提升」和「赋值」是两个过程。 我拆解一下那个例子: ```javascript var Foo = function() { /** pass */ }; { // 「块作用域」内可以访问全局变量 Foo const foo = new Foo(); } ``` ```javascript var Foo = function() {...
@XueSeason 哈哈哈,审题不清,这轮面试要挂了。 再补充一点: ES5 和 ES6 子类 `this` 生成顺序不同。ES5 的继承先生成了子类实例,再调用父类的构造函数修饰子类实例,ES6 的继承先生成父类实例,再调用子类的构造函数修饰父类实例。这个差别使得 ES6 可以继承内置对象。 ```javascript function MyES5Array() { Array.call(this, arguments); } // it's useless const arrayES5 = new MyES5Array(3); // arrayES5:...
### 联系 发布-订阅模式是观察者模式的一种变体。发布-订阅只是把一部分功能抽象成一个独立的ChangeManager。 ### 意图 都是某个对象(subject, publisher)改变,使依赖于它的多个对象(observers, subscribers)得到通知。 ### 区别与适用场景 总的来说,发布-订阅模式适合更复杂的场景。 在「一对多」的场景下,发布者的某次更新只想通知它的部分订阅者? 在「多对一」或者「多对多」场景下。一个订阅者依赖于多个发布者,某个发布者更新后是否需要通知订阅者?还是等所有发布者都更新完毕再通知订阅者? 这些逻辑都可以放到ChangeManager里。
如果是 89 ~ 91 年的数据 需要处理一下夏令时 ```javascript var _getTime = function(date) { const RE = /夏令/; let timestamp = date.getTime(); if (RE.test(date.toString())) { timestamp += 1000 * 60 * 60;...