我试图调用一个函数做乘法,该函数在另一个接受两个数字作为参数的函数上。我曾尝试使用构造函数和嵌套函数,但无济于事。我尝试了以下方法:
function Coordinate(a, b) {
var x, y;
return {x: a, y: b};
function multiply(n) {
x * n;
y * n;
}
}
var makeCoordinate = new Coordinate(2,3);
console.log(makeCoordinate.multiple(2));
//预期输出:4 6;
答案 0 :(得分:2)
您应将multiply
设置为Coordinate
的 prototype 上,以便在调用new Coordinate
时,实例化的对象将具有{{1} }作为一种方法。为了使它起作用,您还应该设置multiply
和this.x
而不是直接返回对象:
this.y
或者,如果您希望function Coordinate(a, b) {
this.x = a;
this.y = b;
}
Coordinate.prototype.multiply = function(n) {
this.x *= n;
this.y *= n;
return this;
}
var makeCoordinate = new Coordinate(2,3);
console.log(makeCoordinate.multiply(2));
仅返回相乘的坐标而不更改原始对象,则仅返回坐标:
multiply
答案 1 :(得分:0)
答案修改了两个部分:
希望获得帮助:)
function Coordinate(a, b) {
this.x = a;
this.y = b;
this.multiply = function(n) {
return this.x * n + " " + this.y * n;
}
}
var makeCoordinate = new Coordinate(2,3);
console.log(makeCoordinate.multiply(2));
答案 2 :(得分:0)
好吧,首先,您的console.log正在调用多个而不是多个。
第二,尝试这样的方法:
YourServiceClassName.this
答案 3 :(得分:0)
在评论中已阐明,(最简单的)解决方案是:
MATHJAX
如果您不想在每个Coordinate对象中复制该函数,也可以将其放入原型中。