描述
复习数据结构预算法时,想用JS写一个优先级队列,对JS里面的类啊、原型什么的搞懵了,之前没遇到过这种语法问题
问题截图
问题:
1.vscode
里面这种绿色高亮是不是就是表示类?
2.当我加上this.item
时PriorityQueue
函数就变成绿色的了,所以想问一下如果是定义变量可不可以var
?然后再pq
对象上调用
3.定义enqueue()
方法时,为什么要在priorityQueue
的原型对象上定义
补充:第一次在这个平台上提问,刚刚打开发现被好多人踩👎了,如果有提问格式问题麻烦指正一下!谢谢
这个平台比CSDN好用多了!!!
new 调用函数时,会自动执行下面的操作:
Q1:
vscode
里面这种绿色高亮是不是就是表示类?Answer: 显然,它是个函数, var pq = new PriorityQueue(),通常被称为“构造函数调用”, 但和传统的面向类语言的类构造函数不一样,最本质的区别就是:js 不会复制,对象之间是通过[[prototype]]关联的。
new 会劫持所有普通函数并用构造对象的形式来调用它
Q2: 当我加上
this.item
时PriorityQueue
函数就变成绿色的了,所以想问一下js
函数里面this.item
这种写法是表示什么呢?Answer:
this.item
是为了隐式传递一个对象引用,在你的代码里就是 pq,Q3: 如果是定义变量可不可以
var
?Answer: 当然不可以啦,用了 var 就不会给创建的 pq 对象 new 后有item属性