Javascript 一种getter语法有效,但另一种不起作用';T
这个getter语法在没有Javascript 一种getter语法有效,但另一种不起作用';T,javascript,getter,Javascript,Getter,这个getter语法在没有对象的情况下如何工作。defineProperty var Vector = function(x, y) { this.x = x; this.y = y; } Vector.prototype = { getX: function() { return this.x; } } var vector = new Vector(22, 1); vector.x = 3; alert(vector.getX()); 这
对象的情况下如何工作。defineProperty
var Vector = function(x, y) {
this.x = x;
this.y = y;
}
Vector.prototype = {
getX: function() {
return this.x;
}
}
var vector = new Vector(22, 1);
vector.x = 3;
alert(vector.getX());
这个getter语法不起作用(在JSFiddle和CodePen中)
这些getter语法之间有什么区别?我应该在什么时候使用它们?后一个示例有两个问题: <> >你指的是不存在的变量<代码> x>代码>:JS不工作,如C++或C语言或java,在这里你只指定一个成员名称,但是你必须使用<代码>这个< /Cord>参考来处理它。所以它必须是
this.x
Vector.prototype = {
get x() {
return this.x;
}
}
此代码定义一个getter,该getter访问自身以返回值。这会导致调用getter,以便它可以再次无限地调用自己
它的解决方案是为数据成员本身及其getter使用不同的名称(比如this.x
vsthis.x
)PS:准确地说,“这个getter语法不起作用”——这不是语法问题,因为代码在语法上是正确的。这个问题出现在运行时,是代码逻辑的问题。在第一个示例中,您定义了一个以get开头的函数。这并不意味着这是一个好消息getter@JaromandaX--第一个示例的语法似乎在这个人的答案中被用作getter?
Vector.prototype = {
get x() {
return this.x;
}
}