如何解决你能通过函数表达式实现 Javascript 类吗?
实现 MapSum 类:
MapSum() 初始化 MapSum 对象。无效插入(字符串键,int val) 将键值对插入到映射中。如果钥匙已经 存在,原始键值对将被新的键值对覆盖 一。 int sum(string prefix) 返回所有对值的总和 其键以前缀开头。
在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
关键字实际上只是 prototypal inheritance 上的语法糖
这段代码演示了两种语法是等价的:
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
的特殊对象。类的每个实例都有一个指向构造函数原型的内部链接。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。