Symbol() 是个什么东西?

最近在一些 Demo 中经常会看到 Symbol() 这个东西,例如:

var race = {
  protoss: Symbol(),
  terran: Symbol(),
  zerg: Symbol()
}

就只能记得大概了,就是赋值一个独特的值,但是这个值具体是什么我想不起来了。
所以还是记个笔记加深下印象,省的看了又忘。

ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型

阅读全文

ES6 中的 新数据结构 Set & Map

今天在一个需求里边遇到一个使用 MAP 数据结构的场景,就去解了一下 ES6 的新数据结构

ECMAScript 6 内提供了 4种 新结构 Set, WeakSet, Map, WeakMap,虽然已经是5年前的知识了,但是对于我来说还是新🤣

本来想先聊 Map 的,但是仔细看了阮一峰老师的文章之后发现,确实是要从 Set 开始讲

阅读全文

VueJS中 v-bind 的一些修饰符

今天洗澡的时候在听 饥人谷的模拟面试 (五) 的时候,一直觉得这次面试的学生有点差,如果是我来面话可能已经让他回家了,但是 方方老师 很有耐心,在中间问道 .sync 的时候我 ???? 完全没有印象了。

正好已经有2个月没有更新了,所以复习一下 v-bind 的三个修饰符 [ .prop, .camel, .sync ]

阅读全文

Vue 使用 ref 注册组件的特性

一直以来,我对于 VueJS 中对于使用 ref 注册的组件,在使用 $refs 调用时,为什么有时候是一个 DOM元素/组件实例,是时候会是一个实例数组

所以在很长一段时间内我觉得 ref 注册的的组件在使用 $refs 调用时有很大的不确定性,虽然我的弹窗组件一直都是用的 $refs.modal.open() 来打开的。

直到前一段时间,我在一个场景下想在 v-for 循环渲染的组件下 slot 模板中想使用 ref 注册成一个实例集合来调用时,发现怎么样重写返回的都只是一个组件实例,而不是一个组件实例集合。

所以有了这样一篇笔记。

阅读全文

JavaScript 中的 this 指向问题

今天在群里看到大家在讨论一个问题,就是 this 的指向,并且牵扯到了 letconst 的变量提升,比如说在全局顶部声明的 let 变量能否挂载到 window 下之类的。
还是老流程,先讨论第一个问题,然后再开始牵扯到后续的展开。

this 指向大概分为两种,普通函数内的 this 和 箭头函数内的 this,箭头函数内的 this 其实挺好理解的,主要是因为各种 call()apply()bind()new 影响下的 this 指向问题。

阅读全文

JS 中的各种 for 循环

真是一坑未填又开一坑….现在阶段,for循环有4种,我们先把所有的 for 循环列出,一个一个的聊。

从MDN上边,找到了 四种 for 循环,分别是:forfor...infor...offor await...of

阅读全文

Js数组中的 find/findIndex/some 以及 every

今天写 Demo 的时候突然在想 find()some() 的区别是什么? 都是为了找到数组中的内容啊?他们的区别在哪里呢

其实我在打这行字的时候就突然想起来区别是什么了😂,所以我把标题改了

相对于 some() 方法, 我知道 find() 方法会更加早一些,不知道为何,🤔明明 find() 方法才是更加新的特性( 也许因为子龙提到的因为jQuery?)

所以今天我们来聊一聊 find/findIndex/some 以及 every 这4个使用起来感觉差不多的方法。

阅读全文

ES6 中 Array 的 fill() 方法

fill 方法用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。

最近遇到的一个坑,其实也不算是坑,只是自己没有了解清楚就在用了。

以前在业务中声明数组变量时我都是使用的 var arr = [] 来声明,
这次兴起用了一次 var arr = new Array(8).fill([]) 声明并且填充内容时居然翻车了….

阅读全文

简单实现滑动滑块完成验证

偶尔会遇到PM提的需求,要加入滑动验证,但是不想使用付费的第三方验证,想就在前端实现滑块验证即可(zuò zuò yàng zi),
这一段时间遇到两次要求加滑动验证了,就整理一下构思和部分伪代码逻辑。

本例只是一个面子工程,不会牵扯到复杂的人机验证部分,所以如果需要考虑人机校验,还是推荐你选择靠谱的第三方行为验证,不要自己瞎折腾。

阅读全文

谈一谈 JavaScript 中的闭包

函数和对其周围状态(lexical environment,词法环境)的引用捆绑在一起构成闭包(closure)。也就是说,闭包可以让你从内部函数访问外部函数作用域。在 JavaScript 中,每当函数被创建,就会在函数生成时生成闭包。

先拿 MDN 上的一个简单的 🌰 来说:

function init() {
    var name = "Mozilla"; // name 是一个被 init 创建的局部变量
    function displayName() { // displayName() 是内部函数,一个闭包
        alert(name); // 使用了父函数中声明的变量
    }
    displayName();
}
init();

init() 创建了一个局部变量 name 和一个名为 displayName() 的函数。
displayName() 是定义在 init() 里的内部函数(仅在 init() 函数体内可用),它没有自己的局部变量,
然而它可以访问到外部函数的变量,所以 displayName() 可以使用父函数 init() 中声明的变量 name

阅读全文