将get和set添加到构造函数的原型链中
add get and set to the prototype chain of a constructor
这段代码应该做一个简单的任务,即计算两点之间的距离。事实上,我写这段代码是为了学习get和set是如何工作的,因为我对这个概念还很陌生。但它总是给我错误,比如意外的逗号/分号。我不知道实际的问题是什么。
我还有一个问题,如果我想为x和y变量设置新的值,我该如何实现??我的意思是,我可以把set属性当作一个函数,并简单地发送值。加法(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);
})();
这不是声明setter和getter的好方法。请参阅mozilla文档。
这里有一个带修复程序的活样本:
(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"/>
相关文章:
- 如何从构造函数中调用js原型方法
- 通过原型/构造函数从复选框输出值
- Javascript:继承原型而不重新定义构造函数
- 使用sinon.js创建一个“;“间谍对象”;使用基于真实构造函数/原型的间谍方法
- 使用构造函数 - 原型从文本框输出值
- JavaScript原型构造函数只调用过一次
- JavaScript 原型构造函数语法 1 与语法 2
- 构造函数属性值应该是什么 .a 原型构造函数或对象构造函数本身
- 什么是原型?构造函数或其他对象
- 在对象上正确设置原型构造函数
- 重构JavaScript原型构造函数中的重复代码
- 是否需要在经典继承中更改子类的“原型.构造函数”
- 将实例属性放置在原型构造函数中,无论好坏
- javascript原型构造函数和instanceof
- 正在原型构造函数中创建对象引用
- 在javascript的构造函数本身中获取原型构造函数的名称
- 原型构造函数和私有属性的区别
- 为什么原型构造函数中的变量在作为属性访问时未定义
- 如何在 Typescript 中实现无原型构造函数
- 如何为原型链中的构造函数找到根原型构造函数?