我看过很多帖子,说Class只是Syntactic Sugar或者在Javascript ES6中询问Class是否为Syntactic Sugar
但是我很难理解Syntactic Sugar的含义(我确实得到了易于阅读或理解的字面含义)。
我的问题是Javascript中的类是什么语法糖?
例如,在这个问题中are es6 classes just syntactic sugar for the prototypal pattern in javascript?
与此示例的相关性如何
class Thing {
//... classy stuff
}
vs
var Thing = function() {
// ... setup stuff
};
Thing.prototype.doStuff = function() {};
上面的类中是否应该有一些方法(doStuff)来使它等同比较?
答案 0 :(得分:5)
是的,在提供的示例中应该有类中的方法。
语法糖意味着语言的新功能并不是新的。相反,它们是现有内容的更好的语法/您可以通过在旧版本中编写不同的内容来完全相同。因此,像Babel这样的转换器可以将新语法转换为旧语法。
答案 1 :(得分:4)
句法糖是抽象语法(简写,简化,易于理解,暴露必要)
任何简化的东西都是语法糖。
例如
可以考虑缩短的表单,例如“不要”或“没有” 句法糖
让a = b + c 可以将语法糖作为让a = b.Add(c)
在计算机科学中,语法糖是编程中的语法 旨在使事物更易于阅读或表达的语言。 它使语言“更甜”供人类使用:事物可以表达 更清楚,更简洁,或者某种可能的替代风格 喜欢。 source
使用好示例
数组引用是两个参数的过程:数组和下标向量,可以表示为get_array(Array, vector(i,j))
相反,许多语言都提供Array[i,j]
类似地,数组元素更新是三个参数的过程;
类似set_array(Array, vector(i,j), value)
的内容,但许多语言都提供Array[i,j] = value
等语法。
答案 2 :(得分:2)
在javascript类的情况下,我们使用术语Syntactic Sugar,因为当你编写类Something {}时,解释器实际上会根据旧的原型生成javascript代码。
所以"班级"此外,只不过是开发人员可以避免使用旧的原型模式,并使来自面向对象背景的人更轻松地使用javascripts functonal nature。
在你的例子中,比较是不正确的,因为缺少一个函数,但关键是在结束类中使用幕后的旧原型