添加两个点的最简单方法

时间:2017-01-11 11:25:53

标签: javascript

我有两点ab

var a = new Point(10, 20);
var b = new Point(5, 15);

我想创建第三个点c,它是ab的总和,如下所示:

// same as new Point(15,35)
c = new Point( a + b )

要做到这一点,我知道我必须覆盖原型valueOf()方法。但它需要返回x和y值以便能够作为示例...

有关如何实施Point课程的任何提示?

1 个答案:

答案 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);