我正在阅读MDN documentation on JavaScript classes,并遇到了分配我不理解的值的示例。由于页面只是在解释其他内容(静态方法),因此未解释有问题的行。不过,我对它的工作原理以及它的正式名称着迷,以便于我进一步研究。
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
static distance(a, b) {
const dx = a.x - b.x;
const dy = a.y - b.y;
return Math.hypot(dx, dy);
}
}
我具体不理解的是a.x
,b.x
,a.y
和b.y
。我不会考虑这种点符号,因为点符号定义为“在JavaScript中,人们可以使用点符号...来访问属性。” 。因此,如果这不是点符号,那么什么术语将适用于将x
和y
分配给a
和b
的值?
行中的字母a
和b
不会-
static distance(a, b)
从技术上讲被称为“参数”,它明确定义为属性以外的其他内容。而且由于它们是“参数”,因此“属性”一词将不适用,因此,点符号的正式定义也不适用。
参数定义:参数是作为函数定义一部分列出的变量
属性的定义:具有一个值,该值可能可写也可能不可写
点符号的定义:在JavaScript中,人们可以使用点符号来访问属性...
答案 0 :(得分:-1)
该问题是由于缺乏对对象实例化如何工作以及如何在静态方法中引用该对象的理解。
行上的a
和b
static distance(a,b)
不是典型的参数,就像我想的那样,它只采用一个值。实际上,在创建对象时,它们实际上正在接收完整的实例化对象引用。因此,a.x
的点符号确实是对分配给对象内部名称或属性的值的“点符号”引用。我也感到困惑的是如何
b.x
和b.y
。显然,“辅助方法”(例如 static方法)通过编程方式知道要等到所有参数都填满后才能产生返回结果。而且它通过用对象填充所有参数来知道这一点。