在javascript中传递多个对象作为参数

时间:2014-01-28 22:17:39

标签: javascript

我想要的是将同一对象的多个部分传递给该对象的函数 我正在尝试的是制作一个自定义的矢量数学助手。

我正在寻找的是像

function dotProduct(Vector3 a, Vector3 b){
   //do calculations here
   return Vector3 a.b;
}

但我似乎无法找到任何帮助。 有什么想法吗?

1 个答案:

答案 0 :(得分:3)

JavaScript没有类或类型提示。你可以这样做:

var Vector3 = function(x, y, z) {
    this.x = x;
    this.y = y;
    this.z = z;
}

var dotProduct = function(a, b) {
    // do something with a.x, a.y, a.z, b.x, b.y, b.z
    return new Vector3(...);
}

要创建新的Vector3,您可以使用new关键字:

//                   x  y  z
var v1 = new Vector3(1, 2, 3);
var v2 = new Vector3(2, 3, 4);
var product = dotProduct(v1, v2);

您还可以在dotProduct()个实例上添加Vector3功能:

Vector3.prototype.dotProduct = function(b) {
    // do something with this.x, this.y, this.z, b.x, b.y, b.z
    return new Vector3(...);
}

在这种情况下,您可以将其称为:

var v1 = new Vector3(1, 2, 3);
var v2 = new Vector3(2, 3, 4);
var product = v1.dotProduct(v2);

为了明确您的意图,您可以在评论中添加类型提示:

/**
 * @param Number x
 * @param Number y
 * @param Number z
 * @constructor
 */
var Vector3 = function(x, y, z) {
    this.x = x;
    this.y = y;
    this.z = z;
}

/**
 * @param Vector3 b
 * @return Vector3
 */
Vector3.prototype.dotProduct = function(b) {
    // do something with this.x, this.y, this.z, b.x, b.y, b.z
    return new Vector3(...);
}

大多数JavaScript IDE都知道这意味着什么,并且当你没有将Vector3作为参数传递时会发出警告来帮助你。