我有两点a
和b
:
var a = new Point(10, 20);
var b = new Point(5, 15);
我想创建第三个点c
,它是a
和b
的总和,如下所示:
// same as new Point(15,35)
c = new Point( a + b )
要做到这一点,我知道我必须覆盖原型valueOf()
方法。但它需要返回x和y值以便能够作为示例...
有关如何实施Point
课程的任何提示?
答案 0 :(得分:-1)
function Point(x, y) {
if(x.isObject && y.isObject){
this.x = x.x + y.x;
this.y = x.y + y.y;
} else {
this.x = x;
this.y = y;
}
}
您无法使用重载,因此需要检查参数。这是一个有用的代码片段。
function isObject(value) {
return value !== null && (typeof value === 'undefined' ? 'undefined' : typeof(value)) === 'object';
}
function Point(x, y) {
if(isObject(x) && isObject(y)){
this.x = x.x + y.x;
this.y = x.y + y.y;
} else {
this.x = x;
this.y = y;
}
}
var a = new Point(10, 20);
var b = new Point(20, 10);
var c = new Point(a, b);
console.log(a);
console.log(b);
console.log(c);