Provide/Inject - 我在Vue中很少使用到的一种父子通讯方式

也算是经典面试题的一部分了,对于父子间的通讯很多时候的使用我都是限于 props/$emit 来处理,或者 Vuex/EventBus 这种方式,很少会用到 Provide/Inject 来处理。其实这是一个很实用的跨级组件间通讯的方式。

这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在其上下游关系成立的时间里始终生效。

看文档中关于这对API的解释就可以看到,向其所有后代 注入一个依赖,所以在跨级组件间通讯,或者 单父多子组件间通讯就会很方便了。

简单的使用可以查看官方文档中的示例,我就不举例了,因为使用起来真的很简单。

最直白的(但是错误的)可以理解为 props 的强化版本,暴露一个可以无视子组件的嵌套层级属性来进行注入。

阅读全文

如何判定一个变量是数组

一个不幸的消息,最近我厂因为资金的问题凉凉了,所以我得开始重新找工作了,最近应该会分享一些和面试题有关并且我觉得有意思的内容,
😁 正巧今天面试的时候被问到的一个面试题我觉得就挺有意思的题目:

你如何判断一个变量是数组?

因为得知公司要解散的消息后比较仓促,也就没有好好刷面试题直接就出去面了(无缝衔接实属渣男了),所以被问道这还算是比较经典面试题的时候,下意识就回答了使用 typeof 来判断,但是想起来不对啊,数组他是对象类型嘛!

😱 卧槽,踩坑里了。

就马上补充了一句:“emmmm….好像用 typeof 不行,数组返回的是 Object ,应该可以通过原型链上的 constructor 来判断….噢,通过 instanceof 也可以!”

不出意料因为踩坑了,紧接着面试官就追问了一句 “还有其它的方式吗?”
考虑了5秒左右答 “没有了,暂时想不起来更多的方式。”,面试官回:“还有一种 isArray 可以判断”

以前一直没有考虑过这种问题,去判断一个对象是否为数组的场景。所以我觉得就还蛮有意思的,所以回来之后想看看还有哪几种方式可以判断是否为数组。

阅读全文