Javascript JS构造函数/原型与类的语义名称
在javascript es6中,我们可以在类中执行以下操作:Javascript JS构造函数/原型与类的语义名称,javascript,ecmascript-6,terminology,ecmascript-5,Javascript,Ecmascript 6,Terminology,Ecmascript 5,在javascript es6中,我们可以在类中执行以下操作: class Rectangle { constructor(height, width) { this.height = height; this.width = width; } getArea() { return this.height * this.width } static someStaticMethod() { // does some utility or s
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
getArea() {
return this.height * this.width
}
static someStaticMethod() {
// does some utility or something
}
}
这大概只是以下旧es5代码的语法糖:
function Rectangle() {
this.height = height;
this.width = width;
}
Rectangle.prototype.getArea = function() {
return this.height * this.width
}
Rectangle.someStaticMethod = function() {
// does some utility or something
}
在es6类中,标记以下内容似乎足够简单:
是一个类矩形
是一种实例方法getArea
是一个类或静态方法someStaticMethod
是一个构造函数矩形
是一种原型方法getArea
是一种构造函数方法someStaticMethod
我不确定他们在es5中的名称是否应该与在es6中的名称相同,或者我给他们的名称是否完全准确。您给他们的名称非常准确,但最后一个可能有点争议:
Rectangle.someStaticMethod = function() {
// does some utility or something
}
你说:
someStaticMethod
是一种构造函数方法
你可以称之为,或者只是一种方法,但本质上,是的,你问题中的所有这些都是正确的
Rectangle
是一个构造函数
是的,听起来不错。它是一个构造新实例的函数,因此描述是合适的
getArea
是一种原型方法
方法是作为属性的函数,在这种情况下,它确实是原型的一部分
someStaticMethod
是一种构造函数方法
这有点误导,因为这听起来好像是一种构造某种东西的方法。我更愿意称之为构造函数上的方法。然而,我通常称之为“静态方法”。是的,这是我最不确定的一种方法,如果你必须在方法之前大胆说出你自己的话,你会选择哪种方法=D@AndrewKim我不知道,也许
对象方法
?或者文本方法
?请注意,ES7允许您直接在class@MatthewHerbstES7对静态没有任何改变?@MatthewHerbst这就是ES6。ES7/ES2016引入的唯一语法是**
,它是Math.pow()
的语法糖。术语“实例方法”有时用于区分自己的方法(在实例本身的构造函数中创建)和原型方法。但是,当你不谈论这种差异时,仍然可以使用它。其他选项:“普通方法”、“非静态方法”或“方法”。@Bergi构造函数中设置的箭头函数绑定到实例。对我来说,它应该被称为实例方法,而不是原型中的函数集,因为它总是在特定实例的上下文中执行。谢谢,第三个是我最不舒服的。