我正在学习Javascript。当我尝试使用带原型设置的setter时,我收到错误
TypeError:cir1.radiusToCircle不是函数
var Circle = function(radius){
this._radius = radius;
}
//prototype
Circle.prototype ={
set radiusToCircle(rad) { this._radius = rad; },
get radiusFromCircle() { return this._radius;},
get area() { return (Math.PI * (this._radius * this._radius));}
};
var cir1 = new Circle(5);
cir1.radiusToCircle(14);
我在这里缺少什么?
提前致谢。
答案 0 :(得分:1)
你在做什么可能有用,但我不知道你正在使用的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;
}
答案 1 :(得分:1)
要使用setter,您需要直接设置属性,而不是像函数参数一样传递它。 Setter MDN Docs
cir1.radiusToCircle = 14;