这段代码应该做一个简单的任务,就是计算两点之间的距离。实际上我写了这段代码来学习get和set是如何工作的,因为我是这个概念的新手。但它不断给我一些错误那里有意想不到的逗号/分号。我无法找出实际问题是什么。
另外我有一个问题,如果我想为x和y变量设置新值,我怎么能实现这个?我的意思是我可以将set属性视为一个函数并发送值只是points.addition(5,6) ,7,8)?
(function(){
function Point(x1,x2,y1,y2){
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
}
Point.prototype={
get addition(){
return Math.sqrt((this.x2-this.x1)+(this.y2-this.y1));
},
set addition(x1,x2,y1,y2){
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
}
};
var points=new Point(1,2,3,4);
console.log(points.addition);
})();
答案 0 :(得分:1)
这不是声明setter和getter的好方法。请参阅the mozilla documentation。
这是一个带有修复程序的实时示例:
(function(){
function Point(x1,x2,y1,y2){
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
}
Object.defineProperty(Point.prototype, "addition", {
get: function () {
return Math.sqrt((this.x2-this.x1)+(this.y2-this.y1));
},
set: function (point) {
this.x1 = point.x1;
this.x2 = point.x2;
this.y1 = point.y1;
this.y2 = point.y2;
}
});
var points = new Point(1,2,3,4);
console.log(points.addition);
document.getElementById("output").textContent = points.addition;
})();
<div id="output"/>