我在leet代码中解决了这个问题:
实现MapSum类:
MapSum((初始化MapSum对象。void insert(字符串键,intval(将键val对插入到映射中。如果钥匙已经存在,则原始键值对将被重写为新的一int sum(字符串前缀(返回所有对的值之和其密钥以前缀开头。
在javascript中,解决问题的模板是:
/**
* Initialize your data structure here.
*/
var MapSum = function() {
};
/**
* @param {string} key
* @param {number} val
* @return {void}
*/
MapSum.prototype.insert = function(key, val) {
};
/**
* @param {string} prefix
* @return {number}
*/
MapSum.prototype.sum = function(prefix) {
};
/**
* Your MapSum object will be instantiated and called as such:
* var obj = new MapSum()
* obj.insert(key,val)
* var param_2 = obj.sum(prefix)
*/
我被课堂模板打动了。我习惯于看到javascript类更像这样:
class MapSum {
constructor() {
}
insert(key, value) {
}
sum(prefix) {
}
}
提供的模板leetcode是否被视为一个类?这是什么样的课?当您通过函数表达式(var MapSum = function() { //....}
(初始化对象时,它被称为什么用这种方式写一堂课与我建议的方式最大的区别/含义是什么
class
关键字实际上只是原型继承上的语法糖
这段代码演示了这两种语法是等效的:
class MapSum {
constructor() {
}
insert(key, value) {
}
sum(prefix) {
}
}
console.log(typeof MapSum); // function (actually the constructor)
console.log(MapSum.prototype.insert); // function
console.log(MapSum.prototype.sum); // function
类实际上只是一个构造函数function
,它有一个名为prototype
的特殊对象。该类的每个实例都有一个到构造函数原型的内部链接。