用es6写链表数据结构看不懂

用es5写链表我能看得懂,但是es6写法我就看的很懵了
图片说明
第1行立即执行函数和第10行为什么重名?
为什么141行要用立即执行函数?
为什么最后要return,return的是个什么东西?

为什么第8,9行要用weakmap,直接写const length = 0;const head = null不好吗
第12行this指的是什么?

2个回答

1,第一行和第十行同名问题:其实这里可以不同名,只要保证**第十行的命名和最后return返回的名相同**,那么第一行的变量接收的构造类就是对的。
2,使用匿名函数的原因是为了保护变量,防止内部的head、length这些**常量被污染**。
3,由于执行的是没匿名函数,所以需要把LinkedList这个类**暴露给全局变量LinkedList**,才能使用。
4,返回的**LinkedList类**。
5,第12行的this指的是**LinkedList类**。
6,new LinkedList就是**LinkedList类上边的方法**。
7,储存的值在list中,通过**LinkedList类上边的方法**进行访问。
我是这么理解的,如果错了请指正!

qflyalltime
小羊也疯狂 这里用weakmap有什么用?
接近 2 年之前 回复

比较奇怪的写法。正常的对象元素在自身里面,但是这里的元素不在自身,在LinkedList类的静态类常量里,即head和length。
单独的LinkedList对象,设为list,它的头即为LinkedList.head[list],长度为LinkedList.length[list]。
设置为weakmap是为了在list对象无效后,head和length会把对应的元素自动释放。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问