这问题真的是土到我了,立刻就发了一个知乎想法。但后来我发现,他会不会想问的是几百年前,在盘古开天辟地之后的react 0.x时代,于是我默默把想法干掉了。

如果是createClassextends React.Component,还有点意思。如果是functional component,那您怎么不用同样很「渐进式」同时又更牛逼的vue呢?

简单对比:

createClassComponent/PureComponent
ES5ES6
propTypes/getDefaultPropComponent.defaultProps/Component.propType
this 已被指定属性 this 不默认指向组件(实例)
mixinmixin(被取消,不建议,做不到,HOC)

其中对我来说,这两个的区别可能mixin最有意思

听说 Vue3 数据绑定要切换到 Proxy,为什么?

这就是这篇文章的原因,来源于某个牛逼公司的面试。我真的应该学会怎么清楚表达观点…

definePropertyProxy 使用方式和效果看起来是差不多的,但如果翻译成中文的话,一个是定义属性,一个是代理,并且 MDN 上描述有所不同。

Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。 —— MDN

Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等)。 —— MDN

defineProperty

这是一个 ES5 的方法。一个 defineProperty 需要三个参数,都是 require

Round 1

- 我现在把所有东西都注释掉,改成这样
function a() {
return inner;
let inner;
}
返回什么?

- 那就应该 undefined 了,反正后面不执行

自信的不行,出了门掏出全世界最牛逼的千元机坚果 Pro 2S,验证了一下。

inner is not defined

确实是不执行,但好像不是 undefined 啊╭(*゚Д゚*)╮

Round 2

- 如果改成这样呢
function a() {
function inner() {}
return inner;
let inner;
}
返回什么?

- 返回方法

自信的不行,同样用全世界最牛逼的千元机坚果 Pro 2S,验证了一下。

Identifier ‘inner’ has already been declared

(゚Д゚≡゚д゚)!? 你在返回你🐴呢?

最近想到一个问题:为什么JavaScript定义一个函数有那么多种形式,是历史残留还是为了装逼?研究了一下发现还是有区别的。

JavaScript中定义一个方法主要可以分成两种形式:

  • 函数声明
  • 函数表达式

学会了却不会活用是真的菜…

前几天面试,提到了回调地狱用promise,然后抛出个衍生问题:promise也会嵌套,怎么解决promise的回调地狱。

我想不到,直接问能不能用ES8,说行,然后我就想到了const p2 = await Promise这种做法。

可是,我记得我在若干天前才写了一篇关于「JS方法链式调用」。

只要函数返回值是一个函数,就可以连着调用

So,

p1.then(({ p2 }) => {
  return p2
}).then({ p3 } => {})

以后博客专职曲苑杂坛算了…

刚刚看到一题

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

我想这什么腿?然后什么都没想,直接就

return str.replace(/\ /g, '%20')

然后过了……虽然100多毫秒

著名框架jQuery所使用的设计模式——“虾扯蛋”

之前在知乎回答过一个问题:2018的前端应该学什么。

我回答了:就算前端再复杂,jQuery依然是最流行的那个。

这答案怎么样呢?废话!肯定没人点赞了!

人性就是如此!一旦接受了更装逼新的思路,就会觉得以前见过的东西都太弱了!

新项目想用什么就用什么,什么技术栈健全就用什么。可是老项目并没办法想干什么干什么,时间和精力不允许他去重构。金蝶还在卖VB呢,他们肯定也想过VB已经不行了。

好了题外话,我还是很有兴趣实现一个塞进nlvi的类jq的。

想起以前很容易就会被问到一个问题

如何把两个数值进行交换?

教科书式的编程怎么做?

int i = 1;
int j = 2;

int k = i;

i = j;
j = k;

// 两个数值,把其中一个寄存起来,然后再两次赋值。

以前去写代码的社团,当时我巨活跃,有个师兄就过来说:看你资质不错,我打算亲自培养你,先问你一个问题吧:你如何把两个数值进行交换?写不出代码没关系,我只是要听思路。

我:什么跟什么交换?

师兄:随便你。

于是我打开了sublime text写下这么些东西

var i = 1;
var j = 2;

i += j;
j = i - j;
i -= j;

然后师兄就懵了,你这个B不按套路出牌?

我说我是做外包的肯定没人信,给你看看外包程序员瞎几把搞的热情!

前排提醒:vue-jsx和react-jsx相差甚远,前者基本就是玩具生产链。很多想利用JS语言特性的骚套路基本上都不好实现,而且感觉奇奇怪怪的。所以你的生产环境,千万不要乱试vue-jsx这种搭配,够简单就无所谓了…

也许主题应该改为:你只会使用Console.log()?

现在的前端虽说是越来越复杂,但是我怎么觉得现在前端的要求越来越低了?应该说现在的人,看个几遍vue,知道console.log(),知道var, {}, [],就敢出来找工作了。但是console就这么个方法?

搞笑,你在你的浏览器输入console,自己看看有多少东西!所以为了高效调试我觉得有必要全了解一遍。


0%