带有原型的Javascript设置器函数
我正在学习Javascript。当我尝试将setter与原型一起使用时,我得到了一个错误 TypeError:cir1.radiusToCircle不是函数 我错过了什么带有原型的Javascript设置器函数,javascript,prototype,getter-setter,setter,Javascript,Prototype,Getter Setter,Setter,我正在学习Javascript。当我尝试将setter与原型一起使用时,我得到了一个错误 TypeError:cir1.radiusToCircle不是函数 我错过了什么 提前感谢。您所做的可能会起作用,但我不知道您正在使用的set/get命令以及是否重载函数是一个好主意 从文档中可以看出,set/get将绑定一个回调,当您直接分配成员变量时,该回调将运行一些不相关的代码。如果您正试图这样做,则不需要原型函数 var Circle = function(radius){ this._ra
提前感谢。您所做的可能会起作用,但我不知道您正在使用的set/get命令以及是否重载函数是一个好主意 从文档中可以看出,set/get将绑定一个回调,当您直接分配成员变量时,该回调将运行一些不相关的代码。如果您正试图这样做,则不需要原型函数
var Circle = function(radius){
this._radius = radius;
}
Circle.prototype.getRadiusToCircle = function() {
return this._radius;
}
Circle.prototype.setRadiusToCircle = function(rad) {
this._radius = rad;
}
Circle.prototype.overloadRadiusToCircle = function(rad) {
if(rad != null) {
this._radius = rad;
} else {
return rad;
}
}
Circle.prototype.area = function() {
return (Math.PI * (this._radius * this._radius));
}
比如说
var Circle = function(radius){
this._radius = radius;
this._area = Math.PI * (radius * radius);
}
Circle.prototype = {
set _radius(radius) {
this._area = Math.PI * (radius * radius);
}
}
Circle.prototype.getArea = function() {
return _area;
}
要使用setter,您需要直接设置属性,而不是像函数参数那样传递属性
cir1.radiusToCircle=14
@Tushar My bad,你能把它作为一个答案发布并解释一下吗。检查MDN@Andrew上的示例集语法在对象文本中工作。因此,将其放在原型中是合乎逻辑的。属性和setter不能同时具有相同的名称。你让事情变得更复杂了。OP的代码是100%正确的,请参考另一个答案,该答案有一个指向文档的链接,您不能在这样的构造函数中使用set
。它只适用于对象文本,因此必须像OP正在做的那样添加到原型声明中。请参考OP的问题。他的代码是100%正确的OK,我把set命令移到了原型中——以前从未使用过set。OP是正确的,但不需要使用set命令,该命令在问题中不起任何作用。set命令用于将回调绑定到属性更改。
var Circle = function(radius){
this._radius = radius;
this._area = Math.PI * (radius * radius);
}
Circle.prototype = {
set _radius(radius) {
this._area = Math.PI * (radius * radius);
}
}
Circle.prototype.getArea = function() {
return _area;
}
cir1.radiusToCircle = 14;